Number 객체
는 자바스크립트에서 숫자 데이터를 처리하기 위한 내장 객체입니다.
Number 객체
의 모든 프로퍼티는 정적 프로퍼티입니다.
NaN
NaN
은 Not a Number의 줄임말로, 숫자가 아닌 값을 의미합니다. 물론 그렇다고해서 null
이나 undefined
와 동일한 값도 아닙니다.
NaN
은 숫자가 아닌 동시에 그 어떤 값과도 값이 같지 않기 때문에 NaN === NaN
은 false
가 됩니다.
MAX_VALUE
MIN_VALUE
MAX_VALUE
과 MIN_VALUE
는 Number 객체로 표현이 가능한 최댓값과 최솟값을 출력하는 프로퍼티입니다.
MAX_SAFE_INTEGER
MIN_SAFE_INTEGER
MAX_SAFE_INTEGER
와 MIN_SAFE_INTEGER
는 Number 객체로 안전하게 표현이 가능한 최대, 최소 정수값을 출력하는 프로퍼티입니다. 이 값보다 작거나 큰 연산에 대해서는 정확한 답이라고 장담할 수 없습니다.
NEGATIVE_INFINITY
POSITIVE_INFINITY
NEGATIVE_INFINITY
, POSITIVE_INFINITY
는 각각 음수와 양수의 무한대를 표시합니다. 무한대라는 것은 자바스크립트가 표현가능한 수의 범위를 넘어서는 경우 반환되는 값입니다.
EPSILON
EPSILON
은 1과 Number 객체로 표현 가능한 1보다 큰 최소 값과의 차를 출력한다고 합니다.
toString(n);
toString
은 숫자를 지정된 인수인 n진수의 값으로 변환됩니다. 인수 n의 범위는 2~36사이의 숫자가 올 수 있습니다.
let num = 10; //10진수 10
console.log(num.toString(2)); //2진수로 변환
console.log(num.toString(8)); //8진수로 변환
console.log(num.toString(16)); //16진수로 변환
toExponential(n);
숫자를 지수 표현으로 변경합니다. 인수 n은 소숫점 이하 자릿수를 나타냅니다.
let num = 10;
console.log(num.toExponential(5));
toFixed(n)
반올림을 해주는 메소드입니다. 인수 n번째의 아랫 자리에서 반올림을 합니다.
let num = 1.23456;
console.log(num.toFixed(3));
console.log(num.toFixed(4));
toPrecision(n);
숫자를 소수점이하 n자릿수 소수로 변경해줍니다. 만약 소수를 변환할 때 지정된 인수 n이 기존 소수 자릿수보다 적으면 버림하고, 더 많은 경우 0으로 채워줍니다.
let num = 1.2345;
console.log(num.toPrecision(3));
console.log(num.toPrecision(7));
이하의 메소드들은 정적 메소드입니다.
isNaN(n)
isNaN
은 인수 n의 숫자가 NaN인지 판별합니다. NaN이면(숫자가 아니라면) true, NaN이 아니라면(숫자이면) false를 반환합니다.
isNaN
은 사용에 있어서 몇 가지 주의점들이 있습니다.
console.log(isNaN('10'));
console.log(isNaN('3a'));
console.log(isNaN(''));
console.log(isNaN(' '));
결과에서 보이듯이 인수로 문자열이 입력되면 따옴표를 제거합니다. 그래서 문자열로된 수를 입력하면 숫자로 판별하게됩니다. 또한, 빈 문자열과 공백은 숫자 0으로 인식합니다.
위와 같은 동작을 보이는 이유가 isNaN
은 Global 객체라는 것에 포함되어 있다가 ES6에서 Number 객체로 옮겨져왔습니다. 그래서 비교적 덜 엄격하게 검사하는데요. 만약 엄격하게 검사하고 싶다면 isNaN앞에 Number를 붙여주면 됩니다.
console.log(Number.isNaN('10'));
console.log(Number.isNaN('3a'));
console.log(Number.isNaN(''));
console.log(Number.isNaN(' '));
isFinite(n);
isInteger(n);
isSafeInteger(n);
isFinite
는 인수 n이 유한값인지 판단합니다. isInteger
는 정수값인지 판별하고, isSafeInteger
는 인수 n이 정수값이고 안전하게 표현할 수 있는 범위 내인지도 판별합니다.
parseInt(str, [rad]);
parseFloat(str);
parseInt
는 문자열 인수 str을 정수로 변환해줍니다. 두 번째 인수인 rad는 문자열 str이 몇 진수인지 알려주는 인수입니다. 한가지 주의할 점은 두 번째 인수 rad를 생략한다고 해서 무조건 10진수로 인식하지는 않는다는 점 입니다. 예를 들어 16진수 표현인 0x10
이 들어오면 자동적으로 16진수로 인식해서 동작합니다.
parseFloat
는 문자열 인수 str을 실수로 변환해줍니다.
let num = '10';
console.log(parseInt(num));
console.log(parseInt(num, 10));
console.log(parseInt(num, 2));
console.log(parseFloat(num));
또한 문자열에 숫자와 문자가 혼재할 경우, 처음부터 시작해 숫자로 인식되는 부분까지만 변환을합니다.
let str = '421hi89xz';
console.log(parseInt(str));