예제 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
'Javascript' 카테고리의 다른 글
[모자딥]Math (0) | 2023.11.28 |
---|---|
[모자딥]Number (1) | 2023.11.28 |
[모자딥]프로퍼티 어트리뷰트 객체 변경 방지 (0) | 2023.11.25 |
[모자딥]프로퍼티 어트리뷰트 16.07 ~ 16.08 (0) | 2023.11.23 |
[모자딥]프로퍼티 어트리뷰트 16.03~16.06 (3) | 2023.11.21 |