자바스크립트에서는 정수와 실수 등의 숫자 값으로 작업할 수 있게 해주는 Number 자료형이 래퍼(wrapper) 라이브러리로 제공됩니다.
다른 프로그래밍 언어와 달리 자바스크립트에서는 숫자를 종류별로 분류하지 않고 모두 포괄시켜서 하나의 자료형으로 표현합니다.
즉 정수, 실수, 큰 수, 작은 수 등으로 나누지 않고 Number라는 하나의 자료형으로 모든 숫자를 접근하도록 설계되었습니다.
이러한 Number 타입은 국제 IEEE 754 표준에 따라 64비트 부동 소수점 방식으로 저장하도록 되어있습니다.
숫자는 0~51, 지수는 비트 52~62, 부호는 비트 63에 저장됩니다.
다음은 Number를 여러 방식으로 선언하는 코드입니다.
let num = 5;
typeof(num); // 'number'
let n1 = new Number('100');
let n2 = Number('100');
n1 instanceof Number; // true
n2 instanceof Number; // false
참고로 참조 타입의 객체로 Number를 선언하려면 new Number()를 통해 생성자를 사용하여 만들 수 있으며, 원시 타입의 Number는 Number() 함수를 통해 만들 수 있습니다.
Infinity, NaN
그 밖에 Number에 속하는 특수한 값으로 Infinity, NaN 라는 값이 존재합니다.
무한대를 뜻하는 Infinity는 어떤 수보다도 큰 값을 의미하며, Mozilla 재단의 문서에 따르면 전역 객체, 전역 스코프의 변수에 속합니다. 무한대와 동일한 효과를 나타내는 Infinity는 임의의 수에 곱하면 결과 또한 Infinity로 나오고, 임의의 수를 Infinity로 나누면 0으로 나오게 됩니다.
Infinity에 대한 예제는 다음과 같습니다.
console.log(Infinity); // Infinity
console.log(Infinity + 1); // Infinity
console.log(Math.pow(10,1000)); // Infinity
console.log(Math.log(0)); // Infinity
console.log(1 / Infinity); // 0
console.log(1 / 0); // Infinity
NaN 또한 전역 객체에 속하는 변수이며, 이름은 'Not a number'라는 뜻을 담고 있습니다. 즉, 유효하지 않은 값 또는 표현할 수 없는 값을 표현하기 위한 값입니다.
NaN이 등장하는 경우는 드물지만, Math 함수가 실패하거나(ex : Math.sqrt(-1)) 숫자 파싱에 실패할 때(ex : parseInt("Fail")) 반환됩니다.
0 / 0; // NaN
Infinity - Infinity; // NaN
0 / "유효하지 않은 수식"; // NaN
Number.NaN === NaN; // false
NaN === NaN; // false
isNaN(NaN); // true
let valueIsNaN = (v)=>{return v !== v;}
valueIsNaN(1); // false
valueIsNaN(NaN); // true
'웹프로그래밍 > javascript' 카테고리의 다른 글
자바스크립트(javascript) 템플릿 문자열(template strings) 알아보기 (0) | 2020.01.25 |
---|---|
자바스크립트(javascript) null과 undefined의 차이 (0) | 2020.01.25 |
자바스크립트(javascript) 문자열 다루기 (0) | 2020.01.21 |
자바스크립트(javascript)에서 사용되는 자료형이란? (0) | 2020.01.20 |
자바스크립트를 실행하기 위한 Node.js REPL 환경이란? (0) | 2020.01.19 |