JavaScript BigInt
JavaScript BigInt 變數用於儲存普通 JavaScript Number 無法表示的大整數。
JavaScript 整數精度
JavaScript 整數精度僅為 15 位
在 JavaScript 中,所有數字都儲存在 64 位浮點格式 (IEEE 754 標準) 中。
使用此標準,大整數無法精確表示,會被四捨五入。
因此,JavaScript 只能安全地表示整數
最高可達 9007199254740991 +(253-1)
and
最低可達 -9007199254740991 -(253-1)。
超出此範圍的整數值會丟失精度。
如何建立 BigInt
要建立 BigInt,請在整數末尾附加 n 或呼叫 BigInt()
示例
let x = 9999999999999999;
let y = 9999999999999999n;
自己動手試一試 »
let x = 1234567890123456789012345n;
let y = BigInt(1234567890123456789012345)
自己動手試一試 »
BigInt:新的 JavaScript 資料型別
JavaScript typeof BigInt 的結果是 "bigint"
BigInt 是 JavaScript 中的第二種數值資料型別(僅次於 Number)。
使用 BigInt 後,JavaScript 中支援的資料型別總數為 8 種
1. String (字串)
2. Number (數字)
3. Bigint
4. Boolean (布林值)
5. Undefined (未定義)
6. Null (空值)
7. Symbol (符號)
8. Object (物件)
BigInt 運算子
可用於 JavaScript Number 的運算子也可用於 BigInt。
注意
不允許在 BigInt 和 Number 之間進行算術運算(型別轉換會丟失資訊)。
無符號右移 ( >>> ) 不能在 BigInt 上執行(它沒有固定寬度)。
BigInt 小數
一個 BigInt 不能包含小數。
BigInt 除法示例
let x = 5n;
let y = x / 2;
// 錯誤:不能混合使用 BigInt 和其他型別,請使用顯式轉換。
let x = 5n;
let y = Number(x) / 2;
自己動手試一試 »
BigInt 十六進位制、八進位制和二進位制
BigInt 也可以用十六進位制、八進位制或二進位制表示法編寫
BigInt 十六進位制示例
let hex = 0x20000000000003n;
let oct = 0o400000000000000003n;
let bin = 0b100000000000000000000000000000000000000000000000000011n;
自己動手試一試 »
精度注意事項
四捨五入可能會損害程式安全
瀏覽器支援
BigInt 自 2020 年 9 月起在所有瀏覽器中都受支援
| Chrome 67 | Edge 79 | Firefox 68 | Safari 14 | Opera 54 |
| 2018 年 5 月 | 2020 年 1 月 | 2019 年 7 月 | 2020 年 9 月 | 2018 年 6 月 |
最小和最大安全整數
ES6 在 Number 物件中添加了 max 和 min 屬性
MAX_SAFE_INTEGERMIN_SAFE_INTEGER
新的 Number 方法
ES6 還向 Number 物件添加了 2 個新方法
Number.isInteger()Number.isSafeInteger()
Number.isInteger() 方法
Number.isInteger() 方法如果引數是整數,則返回 true。
Number.isSafeInteger() 方法
安全整數是可以精確表示為雙精度數字的整數。
Number.isSafeInteger() 方法如果引數是安全整數,則返回 true。
安全整數是從 -(253 - 1) 到 +(253 - 1) 的所有整數。
這是安全的:9007199254740991。這是不安全的:9007199254740992。