Number는 표준 빌트인 객체, 생성자 함수 객체 (new 연산자와 함께 인스턴스 생성 가능)
Numer 생성자 함수 인수에 아무것도 전달 안하면 내부 슬롯에 0을 할당함
28-01
const numObj = new Number();
console.dir(numObj); // [[primitiveValue]] : 0
new 연산자를 쓰지 않으면 숫자로 명시적 타입 변환을 해줌
28-04
// 문자열 타입 -> 숫자 타입
Number('0'); // 0
Number('-1'); // -1
Number('10.53'); // 10.53
// 불리언 타입 -> 숫자 타입
Number(true); // 1
Number(false); // 0
Number.EPSILON : 자바스크립트에서 발생할 수 있는 연산법에서 이진법의 부동 소수점에서 생기는 오차의 범위 (늘 자바스크립트에서 생기는 오차)
강의 예제
Number.EPSILON // 2.220446049250313e-16 (= 0.00000000000000002220446049250313)
오차가 발생하는 예시 )
28-05
0.1 + 0.2 === 0.3 // false 왜냐면 0.1 + 0.2 하면 0.3000000000000004 가 나오기 때문에
오차를 감안해서 사용하는 예시 )
28-06
function isEqual(a,b) {
return Math.abs(a - b) < Number.EPSILON
}
isEqual(0.1 + 0.2, 0.3); // true
Number.MAX_VALUE : 자바스크립트에서 “표현”할 수 있는 가장 큰 양수값 (MAX_VALUE보다 큰 건 infinity) ⇒ 표현할 순 있지만 정상적으로 작동할 수 있을 거라고 기대되는 숫자는 아님
Number.MIN_VALUE : 자바스크립트에서 “표현”할 수 있는 가장 작은 양수값 (MIN_VALUE보다 작은 건 0) ⇒ 표현할 순 있지만 정상적으로 작동할 수 있을 거라고 기대되는 숫자는 아님
Number.MAX_SAFE_INTEGER : 자바스크립트에서 “정상적으로 동작”할 수 있는 가장 큰 정수값
Number.MIN_SAFE_INTEGER : 자바스크립트에서 “정상적으로 동작”할 수 있는 가장 작은 정수값
정상적으로 작동하지 않는 경우의 예시
Number.MAX_SAFE_INTEGER
9007199254740991
Number.MAX_SAFE_INTEGER + 1
9007199254740992
Number.MAX_SAFE_INTEGER + 2
9007199254740992
Number.MAX_SAFE_INTEGER + 3
9007199254740994
Number.MAX_SAFE_INTEGER + 4
9007199254740996
Number.POSITIVE_INFINITY === Infinity
Number.NEGATIVE_INFINITY === - Infinity
Number.NaN === NaN