javascript parseInt() failing?

javascript parseInt() failing?

本文关键字:failing parseInt javascript      更新时间:2023-09-26
n = "11004691915666669"
parseInt(n)
parseInt(n, 10)

两个结果都是:11004691915666668这是一分之一。 我测试了一些其他值,它们转换正确。 这是库中的错误还是有更好的转换方法?

有关更多详细信息,请参阅此 SO 问题。您的值超出了 Javascript 可以完全准确地表示的最大整数。

在引擎盖下,Javascript不理解整数,一切都是浮点数。当你达到非常大的数字时,你正在达到准确性的降低。

来自这里给出的 MDN 的 Javascript 参考。

数字的整数范围定义如下:

var biggestInt = 9007199254740992;
var smallestInt = -9007199254740992;

这就是为什么由于您的数字超过了 Javascript 预设的最大 Int 值,parseInt 方法仅返回位于 Javascript 中数字的整数范围内的整数值,如上定义。