모던자바스크립트 Deep Dive를 공부하며 알게된 Number 중 Number의 메서드에 대해 정리해보자
인수는 문자열이어야 한다
Number.parseFloat("12"); // 12
Number.parseFloat("12.34"); // 12.34
Number.parseFloat("12문자열"); // 12
Number.parseFloat("12 34 56"); // 12
Number.parseFloat("문자열 56"); // NaN
인수는 문자열이어야 한다
Number.parseInt("12.34")가 return하는 값이 .parseFloat()와 다르다
Number.parseInt("12"); // 12
Number.parseInt("12.34"); // 12
Number.parseInt("12문자열"); // 12
Number.parseInt("12 34 56"); // 12
Number.parseInt("문자열 56"); // NaN
Number.isNaN(NaN); // true
Number.isNaN(0 / 0); // true ( 0 나누기 0의 값 NaN)
Number.isNaN(13); // false
Number.isNaN(undefined); // false
Number.isNaN(“wecode"); // false
Number.isNaN(true); // false
Number.isFinite(0); // true
Number.isFinite(Infinity); // false
Number.isFinite(NaN); // false
Number.isFinite(“1”); // false
Number.isFinite(null); // false
Number.isInteger(0); // true
Number.isInteger(-100); // true
Number.isInteger(0.1); // false
Number.isInteger(“weCode"); // false
Number.isInteger(Infinity); // false
Number.isInteger(true); // false
안전한 정수값의 범위 : 안전한 정수(safe integer)란 IEEE 754 국제 표준에서 정의한 64비트 부동 소수점 수로 정확히 표현되는 정수. -(2의 53승 - 1)부터 (2의 53승 - 1)까지의 모든 정수 포함한다.
Number.isSafeInteger(10); // true
Number.isSafeInteger(Math.pow(2, 53) - 1); // true
Number.isSafeInteger(Math.pow(2, 53)); // false
Number.isSafeInteger(Infinity); // false
Number.isSafeInteger(NaN); // false
Number.isSafeInteger(3.14); // false
Number의 프로토타입 메소드❓❓
2021과 같은 원시 값(숫자)은 객체가 아니어서 속성과 메서드를 가질 수 없다. 그러나, JavaScript가 속성과 메서드에 액세스할 때는 원시 값을 객체로 간주한다.
또한, Number 인스턴스(≒객체)는 Number.prototype으로부터 메소드와 프로퍼티를 상속받는다. 이러한 특성들을 잘 생각해보면 아래의 Number.prototype.method()의 표현들이 이해가 될 것이다.
let num = 12.3456; // Number 인스턴스를 생성함.
num.toExponential(); // 1.23456e+1
num.toExponential(2); // 1.23e+1
num.toExponential(4); // 1.2346e+1
let num = new Number(2.534);
console.log(num.toExponential()); // 2.534e+0(2.534의 지수표현, 문자열)
(25.34).toExPonential(); // 2.534e+1
(77.1234).toExPonential(4); // 7.7123e+1
let num = 255; // Number 인스턴스를 생성함.
num.toString(); // 255
num.toString(2); // 11111111 (255의 2진법 표현, 문자열)
let num = new Number(10);
console.log(num.toString()); // 10 (문자열, 10진수)
console.log(num.toString(2)); // 1010 (문자열, 2진수)
console.log(num.toString(8)); // 12 (문자열, 8진수)
(10).toString(); // 10 (문자열, 10진수)
(16).toString(2); // 10000 (문자열, 2진수)
(16).toString(8); // 20 (문자열, 8진수)
let num = 3.14159265; // Number 인스턴스를 생성함.
num.toFixed(); // 3
num.toString(2); // 3.14
num.toString(4); // 3.1416
3.14159265.toFixed(6); // 3.141593![]
Let num = new Number(1.2559165);
console.log(num.toFiexd()); // 1
console.log(num.toFiexd(3)); // 1.256
console.log(num.toString(4)); // 1.2559
(12345.6788).toFixed(); // 12345
(12345.6788).toFixed(1); // 12345.7
(12345.6788).toFixed(3); // 12345.679
인수를 생략하면 기본값이 0으로 지정된다
let num = 31415.9265; // Number 인스턴스를 생성함.
<전체 6자릿수 유효, 나머지 반올림 >
num.toPrecision(6); // 31415.9
<전체 2자릿수 유효, 나머지 반올림 : 표현이 불가해서 지수화>
num.toString(2); // 3.1e+4
<전체 4자릿수 유효, 나머지 반올림 : 표현이 불가해서 지수화>
num.toString(4); // 3.142e+4
let num = new Number(31415.9265);
console.log(num.toPrecision()); // 31415.9265
console.log(num.toPrecision(4)); // 3.142e+4
console.log(num.toPrecision(7)); // 31415.93
(12345.6788).toPrecision()); // 12345.6788
(12345.6788). toPrecision(4)); // "1.235e+4"