티스토리 뷰
28.1 Number 생성자 함수
const numObj = new Number();
console.log(numObj); // Number {[[PrimitiveValue]]: 0}
인수를 전달하지 않고 new 연산자와 Number 생성자 함수를 호출할 경우
[[NumberData]] 내부 슬롯에 0을 할당한 Number 래퍼 객체 생성
[[PrimitiveValue]]는 [[NumberData]] 내부 슬롯을 가리킴(ES5에서 사용)
인수를 전달할 경우 [[NumberData]] 내부 슬롯에 인수로 전달받은 숫자를 할당
인수로 숫자가 아닌 값을 전달할 경우 인수를 숫자로 강제 변환
변환할 수 없다면 NaN
new 연산자와 함께 호출하지 않는다면 Number 인스턴스(객체)가 아닌 숫자를 반환
28.2 Number 프로퍼티
1. Number.EPSILON
1과 1보다 큰 숫자 중에서 가장 작은 숫자와의 차이와 같음
2.2204460492503130808472633361816 * (10 ** -16)
부동소수점을 표현하기 위해 사용하는 표준 IEEE 754는 2진법 변환 시 무한소수가 되어 미세한 오차가 발생
Number.EPSILON은 부동소수점으로 인해 발생하는 오차를 해결하기 위해 사용
// a - b의 절대값이 Number.EPSILON보다 작으면 같은 수로 인정
function isEqual(a, b) {
return Math.abs(a - b) < Number.EPSILON;
}
2. Number.MAX_VALUE
자바스크립트로 표현할 수 있는 가장 큰 양수 값 < Infinity
1.7976931348623157 * (10 ** 308)
3. Number.MIN_VALUE
자바스크립트로 표현할 수 있는 가장 작은 양수 값 > 0
5 * (10 ** -324)
4. Number.MAX_SAFE_INTEGER
자바스크립트에서 안전하게 표현할 수 있는 가장 큰 정수값
9007199254740991
5. Number.MIN_SAFE_INTEGER
자바스크립트에서 안전하게 표현할 수 있는 가장 작은 정수값
-9007199254740991
6. Number.POSITIVE_INFINITY
양의 무한대
Infinity
7. Number.NEGATIVE_INFINITY
음의 무한대
-Infinity
8. Number.NaN
Not-a-Number
숫자 타입
window.NaN과 같음
28.3 Number 메서드
1. Number.isFinite
인자가 무한한 값(Infinity, -Infinity)인지 검사하여 boolean 리턴
숫자가 아닌 값(NaN)이 전달된 경우 false
암묵적 타입 변환하지 않음(전역 함수 isFinite는 암묵적 타입 변환하여 검사)
2. Number.isInteger
인자가 정수인지 검사하여 boolean 리턴
암묵적 타입 변환하지 않음
3. Number.isNaN
인자가 NaN인지 검사하여 boolean 리턴(isNaN은 암묵적 타입 변환하여 검사)
4. Number.isSafeInteger
인자가 안전한 정수인지 검사하여 boolean 리턴
-(2 ** 53 - 1) ~ 2 ** 53 - 1 사이의 정수
암묵적 타입 변환하지 않음
5. Number.prototype.toExponential
숫자를 지수 표기법(10의 n승)으로 변환하여 문자열 리턴
부동소수점을 구분하는 기호인지 프로퍼티에 접근하는 접근자인지 모호하기 때문에
숫자를 그룹 연산자로 묶은 뒤 메서드 호출
77.toExponential(); // SyntaxError
(77).toExponential(); // "7.7e+1"
77.1234.toExponential(); // "7.71234e+1"
6. Number.prototype.toFixed
인자로 받는 소숫점 자릿수(기본값 0)를 기준으로 반올림하여 문자열 리턴
7. Number.prototype.toPrecision
인수로 전달받는 자랏수까지 유효하도록 반올림하여 문자열 리턴
인수로 받은 전체 자릿수로 표현할 수 없는 경우 지수 표기법으로 반환
(12345.6789).toPrecision(); // "12345.6789"
(12345.6789).toPrecision(1); // "1e+4"
(12345.6789).toPrecision(2); // "1.2e+4"
(12345.6789).toPrecision(6); // "12345.6"
8. Number.prototype.toString
숫자를 문자열로 변환하여 리턴
인수로 진법을 나타내는 정수를 전달하여 변환할 수 있음
'책' 카테고리의 다른 글
[딥다이브] 30. Date (4) | 2024.08.11 |
---|---|
[딥다이브] 29. Math (0) | 2024.08.06 |
[딥다이브] 27. 배열(2) (0) | 2024.08.04 |
[딥다이브] 27. 배열(1) (1) | 2024.07.29 |
[딥다이브] 26. ES6 함수의 추가 기능 (0) | 2024.07.23 |