我们在使用js进行一下大数计算的时候,由于精度限制,会带来计算结果不准确的问题,如:
const max = Number.MAX_SAFE_INTEGER;
for (let i = 0; i < 10; i++) {
console.log(`${max} + ${i} = ${max + i}`)
}
运行结果
我们可以发现当数据达到一定范围以后,js的计算结果就不在正确,这时候我们就可以通过
ES11的BigInt类型来解决这一问题。什么是
BigInt?BigInt是JavaScript中一种可以用来表示任意精度整数的基本数据类型。使用如下:
const max = Number.MAX_SAFE_INTEGER;
for (let i = 0; i < 10; i++) {
console.log(BigInt(max))
console.log(BigInt(i))
console.log(BigInt(max) + BigInt(i))
console.log(`${BigInt(max)} + ${BigInt(i)} = ${BigInt(max) + BigInt(i)}`)
}
运行结果
由上我们可以看到计算结果已经恢复准确。
使用
BigInt有以下几个注意事项:
1.生成一个BigInt类型的值只需要在任意整数后加上n做后缀即可;
2.BigInt是JavaScript中新的的基础类型,所以可以用typeof操作符去检测;
3.当强制类型转化为布尔值时(例如在使用if,&&,||或者Boolean(int)时触发),BigInt遵循和Numebr一样的规则;
4.BigInt支持那些常见的运算符例如:+,-,*,/ ** %,包括一些按位运算符如|, & , <<, >> ^,BigInt和Number类型值的表现一致;
5.不要混合操作BigInt类型和Number类型,因为任何隐式强制类型转化都会导致精度丢失;
兼容性
人生如白驹过隙死不足恨但夙心往志,不闻于末世矣。

兼容性








网友评论