본문 바로가기

JavaScript

[Deep dive] 28장 Number

28.1 Number 생성자 함수 

 

- 표준 빌트인 객체인 Number 객체는 생성자 함수 객체

 

- Number 생성자 함수에 인수를 전달하지 않고 new 연산자와 함께 호출하면 [[NumberData]] 내부 슬롯에 0을 할당한 Number 래퍼 객체를 생성

- Number 생성자 함수에 인수로 숫자를 전달하면서 new 연산자와 함께 호출하면 [[NumberData]] 내부 슬롯에 인수로 전달받은 숫자를 할당한 Number 래퍼 객체를 생성

const numObj = new Number();
console.log(numObj);//[Number: 0]

const numObj2 = new Number(10);
console.log(numObj2); //[Number: 10]

- Number 생성자 함수의 인수로 숫자가 아닌 값을 전달하면 인수를 숫자로 강제 변환한 후, [[NumberData]] 내부 슬롯에 변환된 숫자를 할당한 Number 래퍼 객체를 생성

let numObj = new Number('10');
console.log(numObj); //[Number: 10]

numObj2= new Number('Hello');
console.log(numObj2); //[Number: NaN]

 

28.2 Number 프로퍼티 

 

28.2.1 Number.EPSILON

- 1과 1보다 큰 숫자 중에서 가장 작은 숫자와의 차이 

- 부동소수점으로 인해 발생하는 오차를 해결하기 위해 사용 

function isEqual(a,b) {
  //a와 b를 뺀 값의 절대값이 Number.EPSILON보다 작으면 같은 수로 인정
  return Math.abs(a-b) < Number.EPSILON;
}

isEqual(0,1 + 0.2, 0,3); //true

 

28.2.2 Number.MAX_VALUE

- 자바스크립트에서 표현할 수 있는 가장 큰 양수 값 

 

28.2.3 Number.MIN_VALUE

- 자바스크립트에서 표현할 수 있는 가장 작은 양수 값

 

28.2.4 Number.MAX_SAFE_INTEGER

- 자바스크립트에서 안전하게 표현할 수 있는 가장 큰 정수값

 

28.2.5 Number.MIN_SAFE_INTEGER

- 자바스크립트에서 안전하게 표현할 수 있는 가장 작은 정수값

 

28.2.6 Number.POSITIVE_INFINTY

- 양의 무한대를 나타내는 숫자값 Infinity

 

28.2.7 Number.NEGATIVE_INFINTY

- 음의 무한대를 나타내는 숫자값 -Infiinty

 

28.2.8 Number.NaN

- 숫자가 아님(Not-a-Number)을 나타내는 숫자값

 

 

28.3 Number 메서드 

 

28.3.1 Number.isFinite

- 인수로 전달된 숫자값이 정상적인 유한수인지 검사하여 그 결과를 불리언 값으로 반환

//인수가 정상적인 유한수 이면 true를 반환
Number.isFinite(0); //true
Number.isFinite(Number.MAX_VALUE); //true
Number.isFinite(Number.MIN_VALUE); //true

//인수가 무한수이면 false를 반환
Number.isFinite(Infinity); //false
Number.isFinite(-Infinity); //false

- 인수가 NaN이면 언제나 false를 반환 

- Number.isFinite는 전달받은 인수를 숫자로 암묵적 타입변환 하지 않음

 

28.3.2 Number.isInteger

- 인수로 전달된 숫자값이 정수인지 검사하여 그 결과를 불리언 값으로 반환

 

28.3.3 Number.isNaN

- 인수로 전달된 숫자값이 NaN인지 검사하여 그 결과를 불리언 값으로 반환

- Number.isNaN는 전달받은 인수를 숫자로 암묵적 타입변환 하지 않음

 

28.3.4 Number.isSafeInteger

- 인수로 전달된 숫자값이 안정한 정수인지 검사하여 그 결과를 불리언 값으로 반환

 

28.3.5 Number.prototype.toExponential

- 숫자를 지수 표기법으로 변환하여 문자열로 변환 

(77.1234).toExponential(); //7.71234e+1
(77.1234).toExponential(4); //7.7123e+1
(77.1234).toExponential(2); //7.71e+1

 

28.3.6 Number.prototype.toFiexd

- 숫자를 반올림하여 문자열로 반환

- 반올림하는 소수점 이하 자릿수를 나타내는 0~20사이의 정수값을 인수로 전달 가능

- 인수를 생략하면 기본값 0이 지정

//소수점 이하 반올림. 인수를 생략하면 기본값 0이 지정
(12345.6789).toFixed(); //12346
//소수점 이하 1자릿수 유효, 나머지 반올림
(12345.6789).toFixed(1); //12345.7
//소수점 이하 2자릿수 유효, 나머지 반올림
(12345.6789).toFixed(2); //12345.68
//소수점 이하 3자릿수 유효, 나머지 반올림
(12345.6789).toFixed(3); //12345.679

 

28.3.7 Number.prototype.toPrecision

- 인수로 전달받은 전체 자릿수까지 유효하도록 나머지 자릿수를 반올림하여 문자열로 반환 

- 인수로 전달받은 전체 자릿수로 표현할 수 없는 경우 지수표기법으로 결과 반환

- 전체 자릿수를 나타내는 0~21 사이의 정수값을 인수로 전달 가능

//전체 자릿수 유효. 인수를 생략하면 기본값 0이 지정
(12345.6789).toPrecision(); //12345.6789
//전체 1자릿수 유효, 나머지 반올림
(12345.6789).toPrecision(1); //1e+4
//전체 2자릿수 유효, 나머지 반올림
(12345.6789).toPrecision(2); //1.2e+4
//전체 3자릿수 유효, 나머지 반올림
(12345.6789).toPrecision(3); //1.23e+4

 

28.3.8 Number.prototype.toString

- 숫자를 문자열로 변환하여 반환 

- 진법을 타나내는 2~36 사이의 정수값을 인수로 전달 가능

 

'JavaScript' 카테고리의 다른 글

[Deep dive] 30장 Date  (0) 2023.08.17
[Deep dive] 29장 Math  (0) 2023.08.17
[Deep dive] 27장 배열(3)  (0) 2023.08.16
[Deep dive] 27장 배열(2)  (0) 2023.08.16
[Deep dive] 27장 배열(1)  (0) 2023.08.16