new 연산자와 함께 Number 인스턴스를 생성할 수 있다.
const numObj = new Number();
console.log(numObj); // Number {[[PrimitiveValue]]: 0}
인수를 전달하지 않고 호출하면 [[NumberData]] 내부 슬롯에 0을 할당한 Number 래퍼 객체를 생성.
인수로 숫자를 전달하면 [[NumberData]] 내부 슬롯에 인수를 할당한 Number 래퍼 객체를 생성.
const numObj = new Number(10);
console.log(numObj); // Number {[[PrimitiveValue]]: 10}
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
//문법
Number.isFinite(value);
//인수가 정상적인 유한수이면 true 반환
console.log(Number.isFinite(0)); // true
console.log(Number.isFinite(Number.MAX_VALUE)); // true
console.log(Number.isFinite(Number.MIN_VALUE)); // true
//인수가 무한수이거나 NaN이면 false 반환
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(NaN)); // false
//문법
Number.isInteger(value);
//인수가 정수이면 true를 반환
console.log(Number.isInteger(10)); // true
console.log(Number.isInteger(-10)); // true
console.log(Number.isInteger(0)); // true
//인수가 소수거나,NaN,Infinity 일경우는 false를 반환
console.log(Number.isInteger(10.5)); // false
console.log(Number.isInteger(NaN)); // false
console.log(Number.isInteger(Infinity)); // false
//인수가 NaN이면 true 반환
console.log(Number.isNaN(NaN)); // true
Number.isNaN()은 isNaN()보다 더 엄격하다.
-> isNaN() 메서드는 매개변수를 강제로 Number()로 바꾸는 문제점을 가지고있다.
-> ES6(ECMAScript 2015)에서는 Number.isNaN()이 추가되었다.
Number.isSafeInteger(value);
//안전한 정수검사
console.log(Number.isSafeInteger(10)); // true
console.log(Number.isSafeInteger(0)); // true
//비정수 값 검사
console.log(Number.isSafeInteger(10.5)); // false
console.log(Number.isSafeInteger('10')); // false
console.log(Number.isSafeInteger(NaN)); // false
console.log(Number.isSafeInteger(Infinity)); // false
console.log(Number.isSafeInteger(-Infinity)); // false
프로토타입 메서드
전달 받은 인수를 지수 표기법 문자열로 반환
숫자 리터럴과 사용시 괄호를 쓸 것
.의 구분이 모호, 소수 구분 기호일 수도 있고 프로퍼티 접근 연산자일 수도 있기 때문
숫자를 반올림하여 문자열로 반환
//소수점 이하 반올림
(12345.6789).toFixed(); // '12346'
(12345.6789).toFixed(1); // '12345.7'
인수로 전달 받은 전체 자릿수까지 유효하도록 나머지 자릿수를 반올림하여 문자열로 반환
//소수점 이하 반올림
(12345.6789).toPrecision(); // '12345.6789'
숫자를 문자열로 변환하여 반환
진법을 나타내는 정수값을 인수로 전달 가능
기본값은 10진법
//인수를 생략하면 10진수 문자열 반환
(10).toString(); // '10'