본문 바로가기
[ Developer ]/JavaScript

[JavaScript] 자바스크립트 숫자 타입

by 김현섭. 2016. 10. 4.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
숫자
자바스크립트의 모든 숫자(정수와 부동 소수점 수)는 모두 Number 타입이다.

자바스크립트의 모든 숫자는 부동 소수점 수로 표현되며, 자바스크립트에서는 IEEE 754 규격에 정의된 64비트 부동 소수점 형태로 숫자를 표현한다.

숫자 리터럴
자바스크립트 프로그램에서 숫자가 직접 나타날 경우 그것을 숫자 리터럴(numerical literal)이라 한다. 자바스크립트에서는 다음과 같은 형식을 지원한다.

- 정수 리터럴: 10진수 정수
- 16진수 리터럴: 16진수 정수로서 "0x" 나 "0X"로 시작해서 16진수 자릿수가 나온다. 16진수 숫자는 0-9와 a(A)-f(F)로 구성된다.
- 8진수 리터럴: 8진수 정수이며, 0으로 시작해서 숫자의 나열이 나오며, 각 숫자는 0과 7 사이의 숫자다.
- 부동 소수점 리터럴: 소수점이 포함돼 있으며, 실수는 숫자의 정수부로 표현되고, 소수점이 나온 다음 숫자의 소수부가 이어진다.

자바스크립트 숫자 리터럴의 예는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script type="text/javascript">
    var number1 = 1;            
    var number2 = 0;            
    var number3 = 999999999;    
    var number4 = 0xff;
    var number5 = 010;
    var number6 = 3.14159265;
    var number7 = 5e5;      // 과학적 표기법
    var number8 = 5E-5;     // 과학적 표기법
     
    console.log("number1 = " + number1);
    console.log("number2 = " + number2);
    console.log("number3 = " + number3);
    console.log("number4 = " + number4);
    console.log("number5 = " + number5);
    console.log("number6 = " + number6);
    console.log("number7 = " + number7);
    console.log("number8 = " + number8);
</script>
cs

위 예제를 실행한 결과는 다음과 같다.

number1 = 1
number2 = 0
number3 = 999999999
number4 = 255
number5 = 8
number6 = 3.14159265
number7 = 500000
number8 = 0.00005


무한대
어떤 숫자가 유한수에서 표현 가능한 가장 큰 수보다 클 경우 Infinity가 나온다. 어떤 음수가 표현 가능한 마지막 음수보다 작을 경우 -Infinity가 나온다.

숫자를 0으로 나눠도 Infinity가 나오는데, 다음 예제를 보자.

1
2
3
4
<script type="text/javascript">
    var number1 = 1/0;          // Infinity
    var number2 = -1/0;         // -Infinity
</script>
cs

isFinite() 함수는 어떤 숫자가 Infinity(양의 Infinity 또는 음의 Infinity)가 아닌지 검사하는 데 사용된다.
Infinity에 값을 더하거나 빼더라도 값은 바뀌지 않는다.

1
2
3
4
5
6
7
8
9
10
11
12
<script type="text/javascript">
    console.log(isFinite(1/0));     // false
    console.log(isFinite(-1/0));    // false
    console.log(isFinite("a"));     // false
    console.log(isFinite(NaN));     // false
    console.log(isFinite(1));       // true
    
    console.log(Infinity == Infinity);      // true
    console.log(Infinity == Infinity+10);   // true
    console.log(Infinity == Infinity-10);   // true
</script>
 
cs


NaN
수학 연산을 수행할 수 없을 경우(예: 0을 0으로 나누는) NaN(not-a-number)이 반환된다.

NaN은 자기 자신을 포함해 다른 어떤 숫자와도 같은지 비교할 수 없으며, 어떤 값이 NaN인지 검사할 때는 isNaN() 함수를 사용한다.

NaN을 이용하는 예제는 다음과 같다.

1
2
3
4
5
6
7
8
9
<script type="text/javascript">
    console.log(0/0);           // NaN
    console.log(isNaN(0/0));    // true
    console.log(isNaN(NaN));    // true
    console.log(isNaN("a"));    // true
    console.log(isNaN(123));    // false
    console.log(NaN == NaN);    // false
    console.log(NaN == 1);      // false
</script>
cs