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_INTEGER
MIN_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。