數值資料
選擇 JScript 中的整數和浮點數這二種數值資料型別時,需視使用的特定狀況而定。 整數資料和浮點數資料有不同的常值表示方式。
正整數、負整數和數字零都是整數。 整數可以用基底 10 (十進位)、基底 8 (八進位) 和基底 16 (十六進位) 來表示。 在 JScript 中,大部分的數字都是以十進位寫成的。 可用 0 (零) 做為前置字元,來代表八進位的整數。 它們只能包含 0 到 7 的數字。 前置字元為 0、包含數字 8 和 (或) 9 的數字會被解譯為十進位的數字。 我們通常不建議使用八進位數字。
可以使用 "0x" (零和 x|X) 做為前置字元,來代表十六進位 (hex) 的整數, 它們只能包含 0 到 9 的數字,以及字母 A 到 F (大寫或小寫)。 字母 A 到 F 分別代表以 10 為基底的 10 到 15 的單一數字; 也就是說,0xF 等於 15,而 0x10 等於 16。
八進位和十六進位的數字都可以是負數,但是不能有小數部分,而且不能以科學 (指數) 附註撰寫。
浮點數值可以是含小數部分的整數。 它們和整數一樣,可以用數字後面接小數點,再接上其他數字來表示。 此外,它們也能以科學標記法來表示; 也就是說,大寫或小寫的 e 會用來表示「10 的乘冪」。 某個數字如果是以一個 0 開頭而且包含一個小數點,則會解譯為十進位浮點數常值,而非八進位常值。
此外,JScript 中的浮點數數字可以代表特殊數值,整數資料型別則不能。 這些是:
NaN (非數字)。 在針對不適當的資料執行算術運算時使用,例如字串或未定義的值。
Infinity。 當正數太大而無法在 JScript 中表示出來時使用。
-Infinity (負無限)。當負數的範圍過大而無法用 JScript 表示時使用。
正零和負零。 JScript 在某些情形下,會將正零和負零視為不同。
以下是 JScript 數字的一些範例。 請注意,以 "0x" 為首而且包含小數點的數字,會產生錯誤。
數字 |
說明 |
相等的十進位數 |
---|---|---|
.0001、0.0001、1e-4、1.0e-4 |
四個相等的浮點數字。 |
0.0001 |
3.45e2 |
浮點數值。 |
345 |
42 |
整數。 |
42 |
0378 |
整數。 雖然它看起來像八進位的數字 (它以零為首),但 8 不是一個有效的八進位數,所以這個數字被視為十進位數。 這會產生層級 1 警告。 |
378 |
0377 |
八進位整數。 請注意雖然它看起來只比上個數字小一,但實際值完全不同。 |
255 |
0.0001, 00.0001 |
浮點數字。 即使這個數以零為首,它並不是八進位的數字,因為它有一個小數點。 |
0.0001 |
0Xff |
十六進位整數。 |
255 |
0x37CF |
十六進位整數。 |
14287 |
0x3e7 |
十六進位整數。 請注意字母 e 不能被視為指數。 |
999 |
0x3.45e2 |
這是一個錯誤。 十六進位數字不可以有小數部分。 |
N/A (編譯器錯誤) |
任何整數類資料型別的變數都只能表示有限範圍的數字。 如果您嘗試指派的數值常值對整數類資料型別而言太大或太小,編譯時期將產生型別不符合的錯誤。 如需詳細資訊,請參閱資料型別摘要。
常值資料型別
JScript 解譯數值常值時的資料型別,通常不重要。 但如果這些數字很大或是非常精準,這些詳細資訊就變得十分重要。
JScript 中的整數常值可以表示 int、long、ulong、decimal 或 double 等型別的資料,取決於常值的大小和用途。 int 型別範圍 (-2147483648 到 2147483647) 中的常值,會被解譯為型別 int。 在該範圍外,但在 long 型別範圍 (-9223372036854775808 至 9223372036854775807) 內的常值解譯為 long。 在該範圍外,但在 ulong 型別範圍 (9223372036854775807 至 18446744073709551615) 內的常值解譯為 ulong。 其他所有整數常值,會被解譯為 double 型別而失去精度。 最後一個規則的例外狀況是,如果立即將常值存入具 decimal 型別的變數或常數中,或是將常值傳給具接收 decimal 型別的函式,則常值會被解譯為 decimal。
JScript 浮點數常值會被解譯為 double 資料型別,除非這個常值立即被當做 decimal 使用 (例如整數常值) 而被解譯為 decimal。 decimal 資料型別不能表示 NaN、正 Infinity 或負 Infinity。