超越雙精度的BigInt

在JavaScript中,Number類型能夠表達的最大數字是2^53,這是 IEEE754 數值的固有缺陷,其中最經典的問題莫過於javascript

0.1 + 02 != 0.3; // true,0.1+0.2的結果爲0.30000000000000004
複製代碼

JavaScript提供了一種新的數據類型 BigInt 表達比2^53大的全部數字。java

語法

BigInt(value); // value能夠是字符串或數值
複製代碼

注意: BigInt() 不是構造函數,所以不能使用 new 操做符。數組

能夠這樣定義一個 BigInt 類型數據函數

let x1 = 10n; // 在整數字面量後面加 n
let x2 = BigInt(123456);
let x3 = BigInt('438223');
複製代碼

須要注意的是:ui

一、BigInt 類型不能使用 Math 對象的方法spa

二、BigInt 類型不能和 Number 類型混合運算code

運算

BigInt 能夠正常使用: +*-**%cdn

BigInt 不能正常使用:/ 。該操做符會致使向零取整,也就是說不會返回小數部分。對象

10n / 2n; // 5n
5n / 2n; // 2n
複製代碼

比較

BigInt 和 Number 寬鬆相等blog

0n ==== 0; // false
0n == 0; // true
複製代碼

BigInt 和 Number 之間能夠正常使用比較符:><>=<= 。所以兩者能夠混入數組進行排序。

條件

BigInt 做爲條件使用時類型 Number

if (0n) {
  console.log(0)
} else {
  console.log(1)
}
複製代碼

兼容性

雖然 BigInt 很強,可是目前的兼容性還不好

更多兼容性問題查看 caniuse.com/#search=Big…

相關文章
相關標籤/搜索