Number

Number 는 37이나 -9.25와 같은 숫자를 표현하고 다룰 때 사용하는 원시 래퍼 객체입니다.

Number 생성자는 숫자를 다루기 위해 상수와 메소드를 가지고 있습니다. 다른 타입의 값은 Number() 함수를 사용하여 숫자로 바꿀 수 있습니다.

JavaScript Number 타입은 Java 혹은 C#의 double 타입처럼 IEEE 754 64비트 바이너리 배정 밀도 값입니다. 즉, 분수 값을 나타낼 수 있지만 저장할 수 있는 값에는 몇 가지 제한이 있습니다. Number는 소수점 이하 17자리 정도만 유지하며 산술은 반올림의 대상이 됩니다. Number가 가질 수 있는 가장 큰 값은 1.8E308 입니다. 그보다 더 큰 값은 특별한 Number 상수인 Infinity으로 대체됩니다.

JavaScript 코드에서 37과 같은 숫자 리터럴은 정수가 아니라 부동 소수점 값입니다. 일상적으로 흔히 사용되는 별도의 정수형은 없습니다. (JavaScript에는 이제 BigInt 타입이 있지만 일상적인 사용을 위해 Number를 대체하도록 설계되지 않았습니다. 37은 여전히 Number일 뿐, BigInt가 아닙니다.)

Number0b101, 0o13, 0x0A와 같은 리터럴 형식으로 표현될 수도 있습니다. 수에 대해서 더 알아보고 싶으면 어휘 문법를 참조하세요.

설명

Number(value)처럼 함수로 사용하면 문자열이나 다른 값을 Number 타입으로 변환합니다. 만약 만약 인수를 숫자로 변환할 수 없으면 NaN을 리턴합니다.

리터럴 구문

123; // 백 이십 삼
123.0; // 동일
123 === 123.0; // 참

함수 구문

Number('123'); // 숫자 123을 반환
Number('123') === 123; // 참

Number('unicorn'); // NaN
Number(undefined); // NaN

Constructor

Number()

새로운 Number 값을 생성합니다.

Static properties

Number.EPSILON

두 개의 표현 가능한 숫자 사이의 최소 간격.

Number.MAX_SAFE_INTEGER

JavaScript에서 안전한 최대 정수. (2^53 - 1)

Number.MAX_VALUE

표현 가능한 가장 큰 양수.

Number.MIN_SAFE_INTEGER

JavaScript에서 안전한 최소 정수. (-(2^53 - 1)).

Number.MIN_VALUE

T표현 가능한 가장 작은 양수. 즉, 0보다 크지만 0에 가장 가까운 양수.

Number.NaN

"Not a Number"(숫자가 아님)을 나타내는 특별한 값.

Number.NEGATIVE_INFINITY

음의 무한대를 나타내는 특수한 값. 오버플로우 시 반환됩니다.

Number.POSITIVE_INFINITY

양의 무한대를 나타내는 특수한 값. 오버플로우 시 반환됩니다.

Number.prototype

Number 객체에 속성을 추가할 수 있습니다.

정적 메소드

Number.isNaN()

주어진 값이 NaN인지 확인합니다.

Number.isFinite()

주어진 값이 유한수 인지 확인합니다.

Number.isInteger()

주어진 값이 정수인지 확인합니다.

Number.isSafeInteger()

주어진 값이 안전한 정수(-(2^53 - 1)2^53 - 1 사이의 정수)인지 확인합니다.

Number.parseFloat(string)

전역 객체 parseFloat()와 동일한 값입니다.

Number.parseInt(string, [radix])

전역 객체 parseInt()와 동일한 값입니다.

인스턴스 메소드

Number.prototype.toExponential(fractionDigits)

지수 표기법으로 표기된 숫자를 표현하는 문자열을 반환한다

Number.prototype.toFixed(digits)

고정 소수점 표기법으로 숫자를 표현하는 문자열을 반환합니다.

Number.prototype.toLocaleString([locales [, options]]) (en-US)

이 숫자를 해당 언어 방식으로 표현된 문자열을 반환합니다. Object.prototype.toLocaleString() 메서드를 재정의합니다.

Number.prototype.toPrecision(precision)

고정 소수점 또는 지수 표기법으로 지정된 정밀도로 숫자를 표현하는 문자열을 반환합니다.

Number.prototype.toString([radix])

지정한 기수("base")에서 지정한 개체를 표현하는 문자열을 반환합니다. Object.prototype.toString() 메서드를 재정의합니다.

Number.prototype.valueOf()

명시된 객체의 원시 값을 반환합니다. Object.prototype.valueOf() 메서드를 재정의합니다.

예제

Number 객체를 사용해 숫자형 변수에 할당

다음 예제에서는 Number 객체의 속성을 사용하여, 여러 숫자 변수에 값을 할당합니다:

const biggestNum = Number.MAX_VALUE;
const smallestNum = Number.MIN_VALUE;
const infiniteNum = Number.POSITIVE_INFINITY;
const negInfiniteNum = Number.NEGATIVE_INFINITY;
const notANum = Number.NaN;

Number의 정수 범위

다음 예제는 Number 객체가 표현할 수 있는 정수의 최소값과 최대값을 보여줍니다. (자세한 내용은 ECMAScript 표준, 6.1.6 The Number Type 장을 참고하세요.

const biggestInt = Number.MAX_SAFE_INTEGER; //  (2**53 - 1) =>  9007199254740991
const smallestInt = Number.MIN_SAFE_INTEGER; // -(2**53 - 1) => -9007199254740991

JSON으로 직렬화한 데이터를 읽을 때, 위의 범위를 벗어나는 수는 JSON 분석기의 Number 형변환 시 손상될 수 있습니다. 이 때는 String을 대신 사용하는 것도 방법입니다.

String를 사용하는 것도 대안입니다.

더 큰 수는 BigInt 타입으로 표현할 수 있습니다.

Number를 사용해 Date 객체 숫자로 변환

다음 예제는 Number를 함수로 사용하여 Date 객체를 숫자 값으로 변환합니다.

let d = new Date('December 17, 1995 03:24:00');
console.log(Number(d));

819199440000가 기록됩니다.

숫자형 문자열에서 숫자로 변환

Number('123'); // 123
Number('123') === 123; // true
Number('12.3'); // 12.3
Number('12.00'); // 12
Number('123e-1'); // 12.3
Number(''); // 0
Number(null); // 0
Number('0x11'); // 17
Number('0b11'); // 3
Number('0o11'); // 9
Number('foo'); // NaN
Number('100a'); // NaN
Number('-Infinity'); // -Infinity

명세

Specification
ECMAScript Language Specification
# sec-number-objects

브라우저 호환성

BCD tables only load in the browser

같이보기