Number 생성자 함수
- 표준 빌트인 객체인 Number 객체는 생성자 함수 객체 → new 연산자와 함께 호출하여 Number 인스턴스 생성 가능
- Number 생성자 함수에 인수를 전달하지 않고 new 연산자와 함께 호출하면 [[NumberData]] 내부 슬롯에 0을 할당한 Number 래퍼 객체 생성
- Number 생성자 함수에 인수를 전달하고 new 연산자와 함께 호출하면 [[NumberData]] 내부 슬롯에 인수로 전달받은 숫자를 할당한 Number 래퍼 객체 생성
- Number 생성자 함수에 숫자가 아닌 값을 전달하면 인수를 숫자로 강제 변환 후 [[NumberData]] 내부 슬롯에 변환된 숫자를 할당한 Number 래퍼 객체 생성 (숫자로 변환할 수 없다면 NaN)
- new 연산자를 사용하지 않고 Number 생성자 함수를 호출하면 Number 인스턴스가 아닌 숫자 반환
const numObj1 = new Number();
console.log(numObj1); // Number { [[PrimitiveValue]] : 0 }
const numObj2 = new Number('10');
console.log(numObj2); // Number { [[PrimitiveValue]] : 10 }
Number 프로퍼티
1. Number.EPSILON
- 1과 1보다 큰 숫자 중에서 가장 작은 숫자와이 차이와 같음
- 약 2.2204460492503130808472633361816 * 10^-16
- 부동소수점으로 인해 발생하는 오차를 해결하기 위해 사용
function isEqual(a, b) {
// a 와 b를 뺀 값의 절대값이 Number.EPSILON 보다 작으면 같은 수로 인정
return Math.abs(a - b) < Number.EPSILON;
}
console.log(isEqual(0.1 + 0.2, 0.3)); // true
2. Number.MAX_VALUE
- 자바스크립트에서 표현할 수 있는 가장 큰 양수 값
- Number.Max_VALUE 보다 큰 숫자는 Infinity
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
console.log(Infinity > Number.MAX_VALUE); // true
3. Number.MIN_VALUE
- 자바스크립트에서 표현할 수 있는 가장 작은 양수 값
- Number.MIN_VALUE 보다 큰 숫자는 0
console.log(Number.MIN_VALUE); // 5e-324
console.log(0 < Number.MIN_VALUE); // true
4. Number.MAX_SAFE_INTIGER
자바스크립트에서 가장 안전하게 표현할 수 있는 가장 큰 정수 값
console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991
5. NUMBER.MIN_SAFE_INTIGER
자바스크립트에서 가장 안전하게 표현할 수 있는 가장 작은 정수 값
console.log(Number.MIN_SAFE_INTEGER); // -9007199254740991
6. NUMBER.PORITIVE_INFINITY
양의 무한대를 나타내는 숫자값 (= Infinity)
Number.POSITIVE_INFINITY; // Infinity
7. NUMBER.NEGATIVE_INFINITY
음의 무한대를 나타내는 숫자값 (= -Infinity)
Number.NEGATIVE_INFINITY // -Infinity
8.NUMBER.NaN
숫자가 아님(Not-a-Number) 을 타나내는 숫자값 (= window.NaN)
Number.NaN // NaN
Number 메서드
1. Number.isFinite
- 인수로 전달된 숫자값이 정상적인 유한수 Infinity, -Infinity인지 검사하여 결과를 불리언 값으로 반환 (암묵적 타입 변환 X)
- 빌트인 전역 함수 isFinite 는 전달 받은 인수를 숫자로 암묵적 타입 변환 하여 검사
// 유한수
console.log(Number.isFinite(Number.MAX_VALUE)); // true
console.log(Number.isFinite(Number.MIN_VALUE)); // true
// 무한수
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(-Infinity)); // false
Number.isFinite(NaN) // false
isFinite(null) // true
2. Number.isInteger
- 인수로 전달된 숫자 값이 정수인지 검사하여 불리언 값으로 반환 (암묵적 타입 변환 X)
console.log(Number.isInteger("123")); // false
console.log(Number.isInteger(false)); // false
console.log(Number.isInteger(Infinity)); // false
3. Number.isNaN
- 인수로 전달된 숫자 값이 NaN인지 검사하여 그 결과를 불리언 값으로 반환 (암묵적 타입 변환 X)
- 빌트인 전역 함수 isNaN은 인수를 숫자로 암묵적 타입 변환하여 검사
Number.isNaN(undefined); // false
isNaN(undefined); // true
4. Number.isSafeInteger
- 인수로 전달된 숫자값이 안전한 정수인지 검사하여 그 결과를 불리언 값으로 반환 (암묵적 타입 변환 X)
Number.isSafeInteger(0); // true
Number.isSafeInteger("123"); // false
Number.isSafeInteger(Infinity); // false
5. Number.prototype.toExponential
- 숫자를 지수 표기법으로 변환하여 문자열로 변환 (지수 표기법 : e 앞에 있는 숫자에 10의 n승을 곱하는 형식으로 수를 나타내는 방식)
- 숫자 리터럴과 함께 Number 프로토타입 메서드를 사용할 경우 에러 발생
- 마침표 연산인지 소수점 구분인지 알 수 없으므로 그룹 연산자를 사용할 것을 권장
(77).toExponential(); // 7.7e+1
(77.1234).toExponential(4); // 7.7123e+1
6. Number.prototype.toFixed
- 숫자를 반올림하여 문자열로 반환
(12345.6789).toFixed(); // '12346'
(12345.6789).toFixed(3); // '12345.679'
7. Number.prototype.toPrecision
- 인수로 전달받은 전체 자릿수까지 유효하도록 나머지 자릿수를 반올림하여 문자열로 반환
- 인수로 전달받은 전체 자릿수로 표현할 수 없는 경우 지수 표기법으로 결과 반환
(12345.6789).toPrecision(); // 12345.6789
(12345.6789).toPrecision(2); // 1.2e+4
8. Number.prototype.toString
- 숫자를 문자열로 변환하여 반환
(16).toString(8); // '20' 8진수 문자열을 반환
(16).toString(16);// '10' 16진수 문자열을 반환
'Javascript' 카테고리의 다른 글
| [모던 자바스크립트 Deep Dive] 27. Date (1) | 2023.11.23 |
|---|---|
| [모던 자바스크립트 Deep Dive] 26. Math (0) | 2023.11.23 |
| [모던 자바스크립트 Deep Dive] 24. 배열 (2) | 2023.11.22 |
| [모던 자바스크립트 Deep Dive] 23. ES6함수의 추가 기능 (0) | 2023.11.20 |
| [모던 자바스크립트 Deep Dive] 22. 클래스 (1) | 2023.11.19 |