원시타입이기 때문에 Number 래퍼 객체를 생성한다.
Number 프로퍼티
Number.EPSILON (엡실론)
1과 1보다 큰 값 중에서 가장 작은 값의 차이. 부동소수점으로 인한 오차 문제를 해결하기 위해 도입되었다.
0.1 + 0.2; // -> 0.30000000000000004
0.1 + 0.2 === 0.3; // -> false
function isEqual(a, b){
// a와 b를 뺀 값의 절대값이 Number.EPSILON보다 작으면 같은 수로 인정한다.
return Math.abs(a - b) < Number.EPSILON;
}
isEqual(0.1 + 0.2, 0.3); // -> true
Number.MAX_SAFE_INTEGER
자바스크립트에서 안전하게 표현할 수 있는 가장 큰 정수값을 나타낸다.
자바스크립트에서는 표현할 수 있는 숫자에 한계가 있는데, Number 타입 안에서 나타낼 수 있는 가장 큰 수를 가리킨다. IEEE 754 표기 방법으로 나타낼 수 있는 숫자.
Number.MAX_SAFE_INTEGER; // -> 9007199254740991
Number 메서드
Number.isFinite
유한수인지 판단하는 메서드이다. 빌트인 전역 함수인 isFinite과 차이가 있다. isFinite는 인수를 숫자로 암묵적 타입 변환하나, Number.isFinite는 그러지 않는다. 숫자가 아닌 인수를 받았을 때 Number.isFinite의 반환값은 언제나 false이다.
// Number.isFinite는 인수를 숫자로 암묵적 타입 변환하지 않는다.
Number.isFinite(null); // -> false
// isFinite는 인수를 숫자로 암묵적 타입 변환한다. null은 0으로 암묵적 타입 변환된다.
isFinite(null); // -> true
Number.isSafeInteger
인수가 안전한 정수인지 판단하는 메서드. 암묵적 타입 변환하지 않는다. 안전한 수란 IEEE 754 표기 방법으로 나타낼 수 있는 숫자.
// 0은 안전한 정수이다.
Number.isSafeInteger(0); // -> true
// 1000000000000000은 안전한 정수이다.
Number.isSafeInteger(1000000000000000); // -> true
// 10000000000000001은 안전하지 않다.
Number.isSafeInteger(10000000000000001); // -> false
// 0.5은 정수가 아니다.
Number.isSafeInteger(0.5); // -> false
// '123'을 숫자로 암묵적 타입 변환하지 않는다.
Number.isSafeInteger('123'); // -> false
// false를 숫자로 암묵적 타입 변환하지 않는다.
Number.isSafeInteger(false); // -> false
// Infinity/-Infinity는 정수가 아니다.
Number.isSafeInteger(Infinity); // -> false
'Today I Learned' 카테고리의 다른 글
모던 자바스크립트 Deep Dive 30장 Date (0) | 2022.04.19 |
---|---|
모던 자바스크립트 Deep Dive 29장 Math (0) | 2022.04.19 |
모던 자바스크립트 Deep Dive 27장 배열 (0) | 2022.04.14 |
모던 자바스크립트 Deep Dive 26장 ES6 함수의 추가 기능 (0) | 2022.04.13 |
모던 자바스크립트 Deep Dive 25장 클래스 (0) | 2022.04.03 |