我认为 javascript 的最大整数值为 2^53,但是当我执行以下操作时:
parseInt(Math.pow(2, 53)) + 10
我正确地得到了 9007199254741002
(= 9007199254740992 + 10)
这是为什么呢?我只想在数字大于或等于允许的最大整数时使用 bigint.js 库。
最佳答案
9007199254740992
是在您开始遇到精度丢失问题之前 JavaScript 中的最大整数值。考虑以下内容:
> Math.pow(2, 53) + 1
9007199254740992
> Math.pow(2, 53) + 2
9007199254740994
> Math.pow(2, 53) + 3
9007199254740996
> Math.pow(2, 53) + 4
可以看出,结果值并非在所有情况下都准确。这是 float 的限制,因为只有 53 位专用于系数。一旦超过 53 位加一个符号位可以表示的范围,浮点表示将随着值的增加而变得越来越命中或未命中。
关于Javascript 最大整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22838588/