표준 빌트인 객체인 Number는 원시 타입인 숫자를 다룰 때 유용한 프로퍼티와 메서드를 제공한다.
/* Number 생성자 함수 */
const obj = new Number(); // Number 인스턴스 생성
console.log(obj); // 인수 전달하지 않을 경우 0을 할당
const obj2 = new Number(1);
console.log(obj2); // 인수로 전달 받은 숫자 할당
const obj3 = new Number('1');
console.log(obj3); // 인수로 전달 받은 문자 숫자로 형변환
const obj4 = new Number('number');
console.log(obj4); // 숫자 형변환 불가 시 NaN
Number.MAX_VALUE : 자바스크립트에서 표현할 수 있는 가장 큰 양수 값
Number.MIN_VALUE : 자바스크립트에서 표현할 수 있는 가장 작은 양수 값
Number.MAX_SAFE_INTEGER : 자바스크립트에서 안전하게 표현할 수 있는 가장 큰 정수 값
Number.MIN_SAFE_INTEGER : 자바스크립트에서 안전하게 표현할 수 있는 가장 작은 정수 값
Number.POSITIVE_INFINITY : 양의 무한대를 나타내는 숫자값 Infinity와 같다
Number.NEGATIVE_INFINITY : 음의 무한대를 나타내는 숫자값 -Infinity와 같다
Number.NaN : 숫자가 아님을 나타내는 숫자값
Number.EPSILON : 부동 소수점으로 인해 발생하는 오차를 해결하기 위해 사용한다
console.log(Number.EPSILON); // 1과 1보다 큰 숫자 중에서 가장 작은 숫자와의 차이와 같다
console.log(0.1 + 0.2); // 부동소수점 표현은 2진법으로 변환했을 때 무한소수가 되어 미세한 오차가 발생할 수 밖에 없다
console.log(0.1 + 0.2 === 0.3); // false
console.log(isEqual(0.1 + 0.2, 0.3)); // true
function isEqual(a, b) {
// a - b의 절대값이 Number.EPSILON 보다 작으면 같은 수로 인정한다
return Math.abs(a - b) < Number.EPSILON;
}
Number.isFinite : 인수로 전달 된 숫자값이 정상적인 유한수인지 검사하여 결과를 불리언으로 반환
console.log(isFinite(null)); // 빌트인 전역함수 isFinite는 암묵적 타입변환을 한다
<br>
Number.`isSafeInteger` : 인수로 전달 된 숫자값이 안전한 정수인지 검사하여 결과를 불리언으로 반환
<br>
Number.prototype.`toExponential` : 숫자를 지수 표기법으로 변환하여 문자열로 반환
<br>
Number.prototype.`toFixed` : 숫자를 반올림하여 문자열로 반환한다
// 반올림 하는 소수점 이하 자리수를 나타내는 0~20 사이의 정수값을 인수로 전달할 수 있다
console.log((1.23456).toFixed()); // 1
console.log((1.23456).toFixed(3)); // 1.235
console.log((1.23456).toFixed(1)); // 1.2
<br>
Number.prototype.`toPrecision` : 인수로 전달 받은 전체 자릿수까지 유효하도록 나머지 자릿수를 반올림하여 문자열로 반환
// 0~21사이의 정수 값을 인수로 전달할 수 있으며 생략하면 기본값 0이 지정된다
console.log((123.456).toPrecision()); // 123.456
console.log((123.456).toPrecision(5)); // 123.46
console.log((123.456).toPrecision(3)); // 123
console.log((123.456).toPrecision(1)); // 1e+2
<br>
Number.prototype.`toString` : 숫자를 문자열로 변환하여 반환한다
// 진법을 나타내는 2~36 사이의 정수값을 인수로 전달할 수 있다
console.log((100).toString()); // 100
console.log((100).toString(2)); // 1100100
console.log((100).toString(8)); // 144
console.log((100).toString(16)); // 64