28장 Number
28.1 Number 생성자 함수
- Number객체는 생성자 함수 객체이므로 new연산자와 함께 호출하여 Number인스턴스를 생성할 수 있음
28.1 Number 프로퍼티
28.2.1 Number.EPSILON (ES6)
- 부동소수점으로 인해 발생하는 오차를 해결하기 위해 사용
0.1 + 0.2; // -> 0.30000000000004
0.1 + 0.2 === 0.3; // -> false
function isEqual(a, b) {
// a와 b를 뺀 값의 절대값이 Number.EPSILON보다 작으면 같은 수로 인정함
return Math.abs(a - b) < Number.EPSILON;
}
isEqual(0.1 + 0.2, 0.3); // -> true
28.2.2 Number.MAX_VALUE
- Number.MAX_VALUE는 자바스크립트에서 표현할 수 있는 가장 큰 양수 값임
- Number.MAX_VALUE보다 큰 숫자는 Infinity임
28.2.3 Number.MIN_VALUE
- Number.MIN_VALUE는 자바스크립트에서 표현할 수 있는 가장 작은 양수 값임
- Number.MIN_VALUE보다 작은 숫자는 0임
28.2.4 Number.MAX_SAFE_INTEGER
- Number.MAX_SAFE_INTEGER는 자바스크립트에서 안전하게 표현할 수 있는 가장 큰 정수값임
28.2.5 Number_MIN_SAFE_INTEGER
- Number.MIN_SAFE_INTEGER는 자바스크립트에서 안전하게 표현할 수 있는 가장 작은 정수값임
28.2.6 Number.POSITIVE_INFINITY
- Number.POSITIVE_INFINITY는 양의 무한대를 나타내고 Infinity와 같음
28.2.7 Number.NEGATIVE_INFINITY
- Number.NEGATIVE_INFINITY는 음의 무한대를 나타내고 -Infinity와 같음
28.2.8 Number.NaN
- Number.NaN은 숫자가 아님을 나타내는 값으로 window.NaN과 같음
28.3 Number메서드
28.3.1 Number.isFinite (ES6)
- Number.isFinite 정적 메서드는 인수로 전달된 숫자값이 Infinity인지 -Infinity인지 검사하여 불리언값으로 반환함
- 인수가 NaN이면 언제나 false반환
- 검사 전에 인수를 숫자로 암묵적 타입 변환하지 않음
// 인수가 유한수이면 true반환
Number.isFinite(0); // -> true
Number.isFinite(Number.MAX_VALUE); // -> true
Number.isFinite(Number.MIN_VALUE); // -> true
// 인수가 무한수이면 false반환
Number.isFinite(Infinity); // -> false
Number.isFinite(-Infinity); // -> false
28.3.2 Number.isInteger (ES6)
- Number.isInteger 정적 메서드는 인수가 정수인지 검사하여 불리언 값으로 반환함
- 검사 전에 인수를 숫자로 암묵적 타입 변환하지 않음
28.3.3 Number.isNaN (ES6)
- Number.isNaN 정적 메서드는 인수가 NaN인지 검사하여 불리언 값으로 반환함
- 검사 전에 인수를 숫자로 암묵적 타입 변환하지 않음
28.3.4 Number.isSafeInteger (ES6)
- Number.isSafeInteger 정적 메서드는 인수가 안전한 정수인지 검사하여 불리언값으로 반환함
- 안전한 정수 값은 -(2^53 - 1)과 2^53 - 1 사이의 정수값임
- 검사 전에 인수를 숫자로 암묵적 타입 변환하지 않음
28.3.5 Number.prototype.toExponential
- toExponential메서드는 숫자를 지수 표기법(매우 크거나 작은 숫자를 표기할 떄 사용)으로 변환하여 문자열로 반환함
(77.1234).toExponential(); // -> '7.71234e+1'
(77.1234).toExponential(4); // -> '7.7123e+1'
(77.1234).toExponential(2); // -> '7.71e+1'
28.3.6 Number.prototype.toFixed
- toFixed메서드는 숫자를 반올림하여 문자열로 반환함
- 반올림하는 소수점 이하 자릿수를 나타내는 0~20사이의 정수값 전달가능 (생략 시 기본값 0 지정)
(12345.6789).toFixed(); // -> '12346'
(12345.6789).toFixed(2); // -> '12345.68'
28.3.7 Number.prototype.toPrecision
- toPrecision메서드는 인수로 전달받은 전체 자릿수까지 유효하도록 나머지 자릿수를 반올림하여 문자열로 반환함, 전체 자릿수로 표현할 수 없는 경우 지수표기법으로 반환함
- 전체 자릿수를 나타내는 0~21사이의 정수값 전달가능 (생략 시 기본값 0 지정)
(12345.6789).toPrecision(); // -> '12345.6789'
(12345.6789).toPrecision(1); // -> '1e+4'
(12345.6789).toPrecision(6); // -> '12345.7'
28.3.8 Number.prototype.toString
- toString메서드는 숫자를 문자열로 변환하여 반환함
- 진법을 나타내는 2~36사이의 정수값 전달 가능(생략시 기본값 10진법 지정)
(10).toString(); -> '10'
// 2진수 문자열 반환
(16).toString(2); -> '10000'
// 8진수 문자열 반환
(16).toString(8); -> '20'