JavaScript 數字
JavaScript 只有一種數字型別。數字可以帶小數或不帶小數書寫。
特大或特小的數字可以使用科學(指數)記數法書寫
JavaScript 數字始終是 64 位浮點數
與許多其他程式語言不同,JavaScript 沒有定義不同型別的數字,例如整數、短整數、長整數、浮點數等。
JavaScript 數字始終儲存為雙精度浮點數,遵循國際 IEEE 754 標準。
這種格式將數字儲存在 64 位中,其中數字(分數)儲存在 0 到 51 位,指數儲存在 52 到 62 位,符號儲存在 63 位
值(也稱為分數/尾數) | 指數 | 符號 |
---|---|---|
52 位 (0 - 51) | 11 位 (52 - 62) | 1 位 (63) |
整數精度
整數(不帶小數點或指數記數法的數字)精確到 15 位。
示例
let x = 999999999999999; // x 將是 999999999999999
let y = 9999999999999999; // y 將是 10000000000000000
自己動手試一試 »
小數的最大位數是 17 位。
浮點精度
數字和字串相加
警告!!
JavaScript 使用 + 運算子進行加法和字串連線。
數字相加。字串連線。
如果您將兩個數字相加,結果將是一個數字
如果您將兩個字串相加,結果將是字串連線
如果您將一個數字和一個字串相加,結果將是字串連線
如果您將一個字串和一個數字相加,結果將是字串連線
一個常見的錯誤是期望結果為 30
一個常見的錯誤是期望結果為 102030
JavaScript 直譯器從左到右執行。
首先,由於 x 和 y 都是數字,所以計算 10 + 20。
然後,由於 z 是字串,所以連線 30 + "30"。
數字字串
JavaScript 字串可以包含數字內容
let x = 100; // x 是一個數字
let y = "100"; // y 是一個字串
JavaScript 將嘗試在所有數字運算中將字串轉換為數字
這會起作用
let x = "100";
let y = "10";
let z = x / y;
這也會起作用
let x = "100";
let y = "10";
let z = x * y;
這也會起作用
let x = "100";
let y = "10";
let z = x - y;
但這不起作用
let x = "100";
let y = "10";
let z = x + y;
在最後一個示例中,JavaScript 使用 + 運算子連線字串。
NaN - 非數字
NaN
是 JavaScript 保留字,表示一個數字不是合法數字。
嘗試對非數字字串進行算術運算將導致 NaN
(非數字)
但是,如果字串是數字,結果將是一個數字
您可以使用全域性 JavaScript 函式 isNaN()
來判斷一個值是否為非數字
請注意 NaN
。如果您在數學運算中使用 NaN
,結果也將是 NaN
或者結果可能是像 NaN5 這樣的連線
NaN
是一個數字:typeof NaN
返回 number
Infinity
Infinity
(或 -Infinity
)是 JavaScript 在您計算超出最大可能數字的數字時將返回的值。
示例
let myNumber = 2;
// 執行直到無窮大
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
}
自己動手試一試 »除以 0(零)也會生成 Infinity
Infinity
是一個數字:typeof Infinity
返回 number
。
十六進位制
如果數字常量前面是 0x,JavaScript 會將其解釋為十六進位制。
切勿以零開頭書寫數字(例如 07)。
一些 JavaScript 版本會將以零開頭的數字解釋為八進位制。
預設情況下,JavaScript 將數字顯示為 基數 10 十進位制。
但是您可以使用 toString()
方法輸出 基數 2 到 基數 36 的數字。
十六進位制是 基數 16。十進位制是 基數 10。八進位制是 基數 8。二進位制是 基數 2。
示例
let myNumber = 32;
myNumber.toString(32);
myNumber.toString(16);
myNumber.toString(12);
myNumber.toString(10);
myNumber.toString(8);
myNumber.toString(2);
自己動手試一試 »
JavaScript 數字作為物件
通常 JavaScript 數字是字面量建立的原始值
let x = 123;
但數字也可以用關鍵詞 new
定義為物件
let y = new Number(123);
不要建立 Number 物件。
new
關鍵詞會使程式碼複雜化並降低執行速度。
Number 物件可能產生意想不到的結果
注意 (x==y)
和 (x===y)
之間的區別。
比較兩個 JavaScript 物件總是返回假。
完整的 JavaScript Number 參考
有關完整的 Number 參考,請訪問我們的
此參考包含所有 Number 屬性和方法的描述和示例。