gpt4 book ai didi

javascript - parseInt 舍入不正确

转载 作者:可可西里 更新时间:2023-11-01 01:23:03 26 4
gpt4 key购买 nike

我在使用 parseInt 时偶然发现了这个问题,我不确定为什么会这样。

console.log(parseInt("16980884512690999"));   // gives 16980884512691000
console.log(parseInt("169808845126909101"));​ // gives 169808845126909100

我显然没有达到 JavaScript 限制中的任何数量限制(Number.MAX_VALUE = 1.7976931348623157e+308)

如果重要,请运行 Win 7 64 位。

我忽略了什么?

Fiddle

最佳答案

不要将 Number.MAX_VALUE 与最大准确 值混淆。 javascript 中的所有数字都存储为 64 位 float ,这意味着您可以获得高(和低)数字,但它们只会精确到特定点。

双 float (即 Javascript 的)有 53 位有效位数精度,这意味着 javascript 中最高/最低的“肯定准确”整数是 +/-9007199254740992 (2^53)。上面/下面的数字可能结果是准确的(那些只是在末尾添加 0,因为可以使用指数位来表示的数字)。

或者,用 ECMAScript 的话说:“请注意,所有大小不大于 2^53 的正整数和负整数都可以用 Number 类型表示(事实上,整数 0 有两种表示形式,+0 和 −0 )。”

更新

只是为现有问题添加一点,ECMAScript 规范要求如果整数少于 22 位,.toString() 将以标准十进制表示法输出它(例如 169808845126909100000 如您的示例所示)。如果它有 22 位或更多位,它将以标准化科学计数法输出(例如 1698088451269091000000 - 额外的 0 - 输出为 1.698088451269091e+21)。

关于javascript - parseInt 舍入不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9297434/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com