숫자 데이터
업데이트: 2007년 11월
JScript에서는 숫자 데이터가 사용되는 특정한 상황에 따라 정수 데이터와 부동 소수점 데이터 중에서 선택합니다. 또한 정수 데이터와 부동 소수점 데이터를 나타내는 방법이 여러 가지 있습니다.
양의 정수, 음의 정수 및 숫자 0은 정수입니다. 정수는 10진수, 8진수 및 16진수로 표시할 수 있습니다. JScript에서 대부분의 숫자는 10진수로 작성됩니다. 8진수를 표시할 때에는 앞에 숫자 0을 붙입니다. 8진수는 0부터 7까지의 숫자만 포함합니다. 0으로 시작하고 8 및/또는 9를 포함하는 숫자는 10진수로 해석됩니다. 8진수 숫자는 가급적이면 사용하지 않는 것이 좋습니다.
16진 정수를 표시할 때에는 앞에 "0x"(숫자 0과 영문자 x|)를 붙입니다. 16진수는 0부터 9까지의 숫자와 A부터 F까지의 영문자(대문자 또는 소문자)만 포함할 수 있습니다. A부터 F까지 영문자는 한 자리 수로서 10진수 10부터 15까지를 나타냅니다. 즉, 0xF는 15이고 0x10은 16입니다.
8진수와 16진수는 음수일 수는 있지만 소수점 이하 자리를 가질 수 없으며 과학적 표기법으로 나타낼 수 없습니다.
부동 소수점 값은 소수 부분이 있는 정수로서 정수와 마찬가지로 숫자 다음에 소수점과 숫자를 사용하여 표시할 수 있으며 과학적 표기법으로 나타낼 수도 있습니다. 즉, 대문자 또는 소문자 e는 "10의 거듭제곱"을 나타냅니다. 하나의 0으로 시작하고 소수점이 있는 숫자는 8진 리터럴이 아니라 10진 부동 소수점 리터럴로 해석됩니다.
또한 JScript에서 부동 소수점 숫자는 정수 계열 데이터 형식이 나타낼 수 없는 다음과 같은 특수한 숫자 값을 나타낼 수 있습니다.
NaN(숫자가 아님). 문자열이나 정의되지 않은 값 등 부적절한 데이터에 대해 수학 연산이 수행될 때 사용됩니다.
Infinity. 양수가 너무 커서 JScript에서 표시할 수 없을 때 사용됩니다.
-Infinity(음의 무한대). 음수가 너무 커서 JScript에서 표시할 수 없을 때 사용됩니다.
양수 0 및 음수 0. JScript에서는 양수 0과 음수 0을 구분해서 사용하는 경우가 있습니다.
다음은 JScript 숫자에 대한 예제입니다. "0x"로 시작하고 소수점이 있는 숫자를 사용하면 오류가 발생합니다.
Number |
설명 |
해당 10진수 값 |
---|---|---|
.0001, 0.0001, 1e-4, 1.0e-4 |
모두 같은 값을 갖는 부동 소수점 수입니다. |
0.0001 |
3.45e2 |
부동 소수점 수. |
345 |
42 |
정수. |
42 |
0378 |
정수. 0으로 시작하여 8진수 같아 보이지만 8은 8진법에 적합한 숫자가 아니므로 10진수로 간주됩니다. 1단계 경고가 생성됩니다. |
378 |
0377 |
8진 정수. 위에 있는 숫자보다 하나 작은 수로 보이지만 실제 값은 완전히 다릅니다. |
255 |
0.0001, 00.0001 |
부동 소수점 수. 0으로 시작하지만 소수점이 있으므로 8진수가 아닙니다. |
0.0001 |
0Xff |
16진 정수. |
255 |
0x37CF |
16진 정수. |
14287 |
0x3e7 |
16진 정수. 문자 e는 지수 연산자(^)로 취급되지 않습니다. |
999 |
0x3.45e2 |
오류가 발생합니다. 16진수는 소수점 이하 자리를 가질 수 없습니다. |
N/A(컴파일러 오류) |
정수 데이터 형식의 변수가 나타낼 수 있는 숫자 범위는 제한적입니다. 정수 계열 데이터 형식에 지나치게 크거나 작은 숫자 리터럴을 할당하려고 하면 컴파일 타임 형식 불일치 오류가 발생합니다. 자세한 내용은 데이터 형식 요약을 참조하십시오.
리터럴의 데이터 형식
대부분의 경우 JScript에서 숫자 리터럴을 해석하는 데이터 형식은 중요하지 않습니다. 그러나, 숫자가 매우 크거나 매우 정확한 경우에는 이러한 세부 사항이 중요합니다.
JScript에서 정수 리터럴은 리터럴의 크기와 용도에 따라 int, long, ulong, decimal 또는 double 데이터 형식을 나타낼 수 있습니다. -2147483648부터 2147483647의 int 형식 범위에 있는 리터럴은 int 형식으로 해석됩니다. 이 범위의 외부에 있지만 long 형식의 범위(-9223372036854775808부터 9223372036854775807까지) 안에 있는 리터럴은 long으로 해석됩니다. 이 범위의 외부에 있지만 ulong 형식의 범위(9223372036854775807부터 18446744073709551615까지) 안에 있는 리터럴은 ulong으로 해석됩니다. 그 밖의 다른 모든 정수는 double로 해석되며 이 경우에는 정확성을 잃게 됩니다. 마지막 규칙에 대한 예외는 리터럴이 decimal로 형식화된 변수나 상수에 즉시 저장되거나 decimal을 받아 들이도록 형식화된 함수로 전달되는 경우로서, 이 경우 리터럴은 decimal로 해석됩니다.
JScript 부동 소수점 리터럴은 정수 리터럴처럼 즉시 decimal로 사용되어 decimal로 해석되는 경우가 아니면 double 데이터 형식으로 해석됩니다. decimal 데이터 형식은 NaN, 양의 Infinity 또는 음의 Infinity를 나타낼 수 없습니다.