28-1. Number 생성자 함수

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

28-2. Number 프로퍼티

  1. 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
    
  2. Number.MAX_VALUE : 자바스크립트에서 “표현”할 수 있는 가장 큰 양수값 (MAX_VALUE보다 큰 건 infinity) ⇒ 표현할 순 있지만 정상적으로 작동할 수 있을 거라고 기대되는 숫자는 아님

  3. Number.MIN_VALUE : 자바스크립트에서 “표현”할 수 있는 가장 작은 양수값 (MIN_VALUE보다 작은 건 0) ⇒ 표현할 순 있지만 정상적으로 작동할 수 있을 거라고 기대되는 숫자는 아님

  4. Number.MAX_SAFE_INTEGER : 자바스크립트에서 “정상적으로 동작”할 수 있는 가장 큰 정수값

  5. 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
    
  6. Number.POSITIVE_INFINITY === Infinity

  7. Number.NEGATIVE_INFINITY === - Infinity

  8. Number.NaN === NaN