Javascript js parseInt()一次过(大数)
当我运行以下命令时:Javascript js parseInt()一次过(大数),javascript,Javascript,当我运行以下命令时: parseInt('96589218797811259658921879781126'.slice(0, 16), 10); 输出是 9658921879781124 然而,正如您所看到的,预期的结果是: 9658921879781125 原因是什么?我在谷歌搜索中模糊地了解到JS中存在一些问题,而且这似乎确实超出了这个阈值,但我不知道该怎么办,或者在这个具体案例中发生了什么。多谢各位 编辑:谢谢你的回答,我发现依赖于一个整数这个大小是个坏消息。使用整数的原因是我需要
parseInt('96589218797811259658921879781126'.slice(0, 16), 10);
输出是
9658921879781124
然而,正如您所看到的,预期的结果是:
9658921879781125
原因是什么?我在谷歌搜索中模糊地了解到JS中存在一些问题,而且这似乎确实超出了这个阈值,但我不知道该怎么办,或者在这个具体案例中发生了什么。多谢各位
编辑:谢谢你的回答,我发现依赖于一个整数这个大小是个坏消息。使用整数的原因是我需要增加1,然后与字符串的其余部分进行比较。在这种情况下,字符串的前半部分应等于前半部分递增1后的后半部分。什么是替代方法?这不是JavaScript问题 JavaScript使用(IEEE 754)存储整数和有理数 此格式允许精确表示-253和253之间的整数(
-9007199254740992
到9007199254740992
)。在此间隔之外,某些整数值不能用此格式表示;它们四舍五入到可以表示的最接近的整数值。例如,从253到254,一切都乘以2
,因此可表示的数字是偶数
JavaScript全局对象提供一个常量,该常量表示IEEE 574格式(253-1)可以存储的最大整数值
它还提供了一种方法,您可以使用该方法确定number
JavaScript类型是否可以安全地存储整数
您使用的数字(
9658921879781124
)太大,无法正确存储在JavaScript或使用双精度浮点格式存储数字的任何其他语言中 编号可能重复。9658921879781124>的最大安全整数
可能重复的看起来像XY问题,您想对编号做什么?仅供参考:为什么9658921879781125
变为9658921879781124
。