28.1 Number 생성자 함수
표준 빌트인 객체로 생성자 함수 객체입니다.
인수를 전달하지 않고 new 연산자와 함께 호출하면 [[NumberData]] 내부 슬롯에 0을 할당한 Number 래퍼 객체를 생성합니다.
const numObj = new Number();
console.log(numObj); // Number {[[PrimitiveValue]]: 0}
JavaScript
복사
여기서 [[PrimitiveValue]]는 [[NumberData]] 내부 슬롯을 가리킵니다. ES5에서 부르던 방식입니다.
만약 인수를 숫자로 전달 시
const numObj = new Number(0);
console.log(numObj); // Number {[[PrimitiveValue]] : 10}
JavaScript
복사
인수를 강제로 숫자로 변환한 후 할당한 래퍼 객체를 생성합니다.
이를 이용해 Number 생성자 함수를 통해 String이나 boolean을 숫자로 변환하기도 합니다.
28.2 Number 프로퍼티
28.2.1 Number.EPSILON
1과 1보다 큰 수중 가장 작은 수 간의 차이를 나타내는데 부동 소수점 오차를 해결하기 위해 사용합니다.
function isEqual(a, b) {
// a와 b를 뺀 값의 절대값이 Number.EPSILION보다 작으면 같은 수로 인정합니다.
return Math.abs(a - b) < Number.EPSITION;
}
JavaScript
복사
28.2.2 Number.MAX_VALUE
JS에서 표현할 수 있는 가장 큰 양수 값 입니다. 이보다 큰 값은 Infinity입니다.
28.2.3 Number.MIN_VALUE
가장 작은 양수 값입니다. 이보다 작은 값은 0입니다.
28.2.3 Number.MAX_SAFE_INTEGER
JS에서 안전하게 표현할 수 있는 가장 큰 정수 값입니다.
28.2.3 Number.MIN_SAFE_INTEGER
JS에서 안전하게 표현할 수 있는 가장 작은 정수 값입니다.
28.2.3 Number.POSITIVE_INFINITY
양의 무한대를 나타내는 숫자 값입니다.
28.2.3 Number.NEGATIVE_INFINITY
음의 무한대를 나타내는 숫자 값입니다.
28.2.3 Number.NaN
숫자가 아님을 나타내는 값입니다.
28.3 Number 메서드
28.3.1 Number.isFinite
인수로 전달된 값이 유한수인지 검사하여 boolean을 반환합니다. 만약NaN이라면 false를 반환합니다. Number.isFinite는 빌트인 전역한수 isFinite와 차이가 있는데 빌트인 전역함수는 암묵적 타입변환이 이루어지지만, Number.isFinite는 암묵적 변환이 일어나지 않습니다.
28.3.2 Number.isInteger
정수인지 판단하여 boolean을 반환하며, 암묵적 타입 변환하지 않습니다.
28.3.3 Number.isNaN
인수로 전달된 값이 NaN인지 검사하여 boolean값으로 반환합니다. 빌트인 전역 isNaNd은 암묵적 타입 변환을 하지만, Number.isNaN은 타입 변환을 하지 않습니다.
28.3.4 Number.isSafeInteger
안전한 정수인지 -(2^53 - 1) ~ 2^53 - 1 사이의 값인지 암묵적 타입 변환없이 확인합니다.
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"
77.toExponential(); // -> SyntaxError
JavaScript
복사
숫자 뒤의 .은 소수 구분 기호 일 수도, 프로퍼티 접근 연산자일 수도 있기 때문에 에러를 발생시킵니다. 여러가지 추가적인 방법이 존재하긴 합니다.
// 소숫점 뒤에
77.1234.toExponential();
// 괄호로 묶기
(77).toExponential();
// 띄어쓰기
77 .toExponential();
JavaScript
복사
28.3.6 Number.prototype.toFixed
숫자를 반올림하는데, 인수로 소수점 이하 자릿수를 나타내는 0~20 사이의 정수 값을 인수로 전달할 수 있습니다. 생략이 0이 지정됩니다.
(12345.6789).toFixed(1); // "12345.7"
JavaScript
복사
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"
// 전체 6자릿수 유효, 나머지는 반올림
(12345.6789).toPrecision(6); // -> "12345.7"
JavaScript
복사
28.3.8 Number.prototype.toString
숫자를 문자열로 변환하여 반환합니다. 이때 진법을 2~36진법으로 변환할 수 있으며 기본은 10진법입니다.
(10).toString(); // "10"
JavaScript
복사