Javascript

[모자딥]Number

index.ys 2023. 11. 27. 22:16

예제 28.01

const numObj = new Number();
console.log(numObj); // Number {[[PrimitiveValue]]: 0}

예제 28.02

const numObj = new Number(10);
console.log(numObj); // Number {[[PrimitiveValue]]: 10}

예제 28.03

  • Number 생성자 함수의 인자로 숫자가 아닌 값을 전달하면 인자를 숫자형으로 강제 변환한다
  • [[NumberData]] 내부 슬롯에 변환된 숫자를 할당한 Number 래퍼 객체를 생성한다.
  • 인자를 숫자로 변환할 수 없다면 NaN을 할당
//문자열 '10'을 인자로 전달하면 숫자 10으로 할당함
let numObj = new Number('10');
console.log(numObj); // Number {[[PrimitiveValue]]: 10}

//숫자로 변환할 수 없는 인자는 NaN으로 할당
numObj = new Number('Hello');
console.log(numObj); // Number {[[PrimitiveValue]]: NaN}

 

예제 28.04

  • Number 생성자 함수를 호출하면 Number인스턴스가 아닌 수자를 반환함
  • 문자 => 숫자로 명시적 형변환 가능
  • true는 1 false는 0
  • Number(undefined)는 NaN 할당
  • 하지만 Number(undefined) === NaN  => false
  • NaN은 자기 자신과 비교해도 false를 반환함
  • Number(null)은 0을 할당
  • Number(null) === 0 //true
// 문자열 타입 => 숫자 타입
Number('0');     // -> 0
Number('-1');    // -> -1
Number('10.53'); // -> 10.53

// 불리언 타입 => 숫자 타입
//true는 1 false는 0
Number(true) === 1
Number(false) === 0
Number(undefined) //NaN
Number(undefined) === NaN //false
NaN === NaN // false
NaN !== NaN //true
Number(null) //0
Number(null) === 0 //true

예제 28.05

  • 부동소수점은 정수가 아닌 실수를 나타낼때 사용함
  • 정확한 값이 아니라 근사값을 나타냄
  • 일부 값은 완벽하게 표현할 수 없는 한계
  • 부동 소수점 연산에서 발생하는 작은 오차에 주의
0.1 + 0.2;         // -> 0.30000000000000004
0.1 + 0.2 === 0.3; // -> false

예제 28.06

  • Number.EPSILON은 부동소수점으로 인해 발생하는 오차를 해결하기 위해 사용
function isEqual(a, b) {
    // a와 b를 뺀 값의 절대값이 Number.EPSILON보다 작으면 같은 수로 인정한다.
    console.log(Math.abs(a - b)) //5.551115123125783e-17
    console.log(Number.EPSILON) //2.220446049250313e-16
    return Math.abs(a - b) < Number.EPSILON;

}

isEqual(0.1 + 0.2, 0.3); // -> true

예제 28.07

  • Number.MAX_VALUE는 자바스크립트에서 표현할 수 있는 가장 큰 양수 값이다.
  • Number.MAX_VALUE보다 큰 숫자는 Infinity이다
Number.MAX_VALUE; // -> 1.7976931348623157e+308
Infinity > Number.MAX_VALUE; // -> true

예제 28.08

  • Number.MIN_VALUE는 자바스크립트에서 표현할 수 있는 가장 작은 양수 값 ( 5 x 10^-324)
  • Number.MIN_VALUE보다 작은 숫자는 0이다.
Number.MIN_VALUE; // -> 5e-324
Number.MIN_VALUE > 0; // -> true

예제 28.09

  • Nubmer.MAX_SAFE_INTEGER는 자바스크립트에서 안전하게 표현할 수 있는 가장 큰 정수값이다.
  • 안전하게 표현할 수 있는 가장 큰 정수값이라는 말은 부동 소수점 형식에서 정수를 정확하게 표현할 수 있는 최대 크기를 의미
Number.MAX_SAFE_INTEGER; // -> 9007199254740991

예제 28.10

  • Number.MIN_SAFE_INTEGER 자바스크립트에서 안전하게 표현할 수 있는 가장 작은 정수값
Number.MIN_SAFE_INTEGER; // -> -9007199254740991

예제 28.11

  • Number.POSITIVE_INFINITY는 양의 무한대를 나타내는 숫자값 Infinity와 같음
Number.POSITIVE_INFINITY; // -> Infinity
console.log(Number.POSITIVE_INFINITY === Infinity) //true

예제 28.12

  • Number.NEGATIVE_INFINITY는 음의 무한대를 나타내는 숫자값 -Infinity와 같음
Number.NEGATIVE_INFINITY; // -> -Infinity
console.log(Number.NEGATIVE_INFINITY === -Infinity); // -> -Infinity

예제 28.13

  • Number.NaN은 숫자가 아님을 나타내는 숫자값
Number.NaN; // -> NaN
console.log(Number.NaN === NaN) //false
console.log(Number('hello') === NaN) //false