看示例: 2 ** 53 = 9007199254740992
看到了吧,加1后,值不变,为啥呢,
查了后了解到: JavaScript 所有数字都保存成 64 位浮点数,这给数值的表示带来了两大限制。
一是数值的精度只能到 53 个二进制位(相当于 16 个十进制位),大于这个范围的整数,JavaScript 是无法精确表示,
这使得 JavaScript 不适合进行科学和金融方面的精确计算。二是大于或等于2的1024次方的数值,JavaScript 无法表示,会返回Infinity
这个时候需要是bigInt 类型
9007199254740992n + 1n
// 转字符串
9007199254740993n + ''
标签:二进制位,相加,JavaScript,53,问题,数值,精确 From: https://www.cnblogs.com/hill-foryou/p/17084803.html