在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…