js中的BigInt
文章类型:Javascript
发布者:admin
发布时间:2023-04-16
一:原因
1:所有的数字都以双精度64位浮点格式
2:Number无法精确表示非常大的整数,四舍五入,Math.pow(2, 53) ,只能安全地表示-9007199254740991(-(2^53-1))和9007199254740991((2^53-1)),任何超出此范围的整数值都可能失去精度
console.log(999999999999999); //=>10000000000000000
9007199254740992 === 9007199254740993; // → true 居然是true!
二:定义
BigInt是一种新的数据类型,用于当整数值大于Number数据类型支持的范围时,这种数据类型允许我们安全地对大整数执行算术操作,
console.log( 9007199254740995n ); // → 9007199254740995n
console.log( 9007199254740995 ); // → 9007199254740996
BigInt("9007199254740995"); // → 9007199254740995n
10n + 20n; // → 30n
三:注意点
1:不支持一元加号运算符
10 + 10n; // → TypeError
2:不能将BigInt传递给Web api和内置的 JS 函数
Math.max(2n, 4n, 6n); // → TypeError
3:当 Boolean 类型与 BigInt 类型相遇时,只要不是0n,BigInt就被视为true
if(0n){//条件判断为false
}
if(3n){//条件为true
}
4:兼容性不好