[Javascript] 내장 객체 - Number

Bam·2022년 2월 26일
0

Javascript

목록 보기
41/106
post-thumbnail

Number 객체

Number 객체는 자바스크립트에서 숫자 데이터를 처리하기 위한 내장 객체입니다.

Number 객체 프로퍼티

Number 객체의 모든 프로퍼티는 정적 프로퍼티입니다.

NaN

NaN

NaN은 Not a Number의 줄임말로, 숫자가 아닌 값을 의미합니다. 물론 그렇다고해서 null이나 undefined와 동일한 값도 아닙니다.

NaN은 숫자가 아닌 동시에 그 어떤 값과도 값이 같지 않기 때문에 NaN === NaNfalse가 됩니다.

MAX_VALUE, MIN_VALUE

MAX_VALUE
MIN_VALUE

MAX_VALUEMIN_VALUE는 Number 객체로 표현이 가능한 최댓값과 최솟값을 출력하는 프로퍼티입니다.

MAX_SAFE_INTEGER, MIN_SAFE_INTEGER

MAX_SAFE_INTEGER
MIN_SAFE_INTEGER

MAX_SAFE_INTEGERMIN_SAFE_INTEGER는 Number 객체로 안전하게 표현이 가능한 최대, 최소 정수값을 출력하는 프로퍼티입니다. 이 값보다 작거나 큰 연산에 대해서는 정확한 답이라고 장담할 수 없습니다.

NEGATIVE_INFINITY, POSITIVE_INFINITY

NEGATIVE_INFINITY
POSITIVE_INFINITY

NEGATIVE_INFINITY, POSITIVE_INFINITY는 각각 음수와 양수의 무한대를 표시합니다. 무한대라는 것은 자바스크립트가 표현가능한 수의 범위를 넘어서는 경우 반환되는 값입니다.

EPSILON

EPSILON

EPSILON은 1과 Number 객체로 표현 가능한 1보다 큰 최소 값과의 차를 출력한다고 합니다.

Number 객체의 메소드

toString

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

toExponential(n);

숫자를 지수 표현으로 변경합니다. 인수 n은 소숫점 이하 자릿수를 나타냅니다.

let num = 10;

console.log(num.toExponential(5));

toFixed

toFixed(n)

반올림을 해주는 메소드입니다. 인수 n번째의 아랫 자리에서 반올림을 합니다.

let num = 1.23456;

console.log(num.toFixed(3));
console.log(num.toFixed(4));

toPrecision

toPrecision(n);

숫자를 소수점이하 n자릿수 소수로 변경해줍니다. 만약 소수를 변환할 때 지정된 인수 n이 기존 소수 자릿수보다 적으면 버림하고, 더 많은 경우 0으로 채워줍니다.

let num = 1.2345;

console.log(num.toPrecision(3));
console.log(num.toPrecision(7));

이하의 메소드들은 정적 메소드입니다.

isNaN

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, isInterger, isSafeInteger

isFinite(n);
isInteger(n);
isSafeInteger(n);

isFinite는 인수 n이 유한값인지 판단합니다. isInteger는 정수값인지 판별하고, isSafeInteger는 인수 n이 정수값이고 안전하게 표현할 수 있는 범위 내인지도 판별합니다.

parseInt, parseFloat

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));

0개의 댓글