gpt4 book ai didi

javascript - 为什么 javascript Number 函数返回该数字的错误值?

转载 作者:行者123 更新时间:2023-11-28 15:07:10 24 4
gpt4 key购买 nike

所以我在使用 javascript Number() 函数时遇到了这个问题,它似乎返回了错误的值:下面的代码: 号码(“10153396863200835”)
返回 10153396863200836,而不是 10153396863200835

但是如果我执行 Number("10153396863200836") 它会返回 10153396863200836和 Number("10153396863200834") 返回 10153396863200834

所以我很困惑发生了什么事?谢谢

最佳答案

因为 JavaScript 的数字是 IEEE-754 double 二进制 float (通常称为“double”)。它们只有大约 15 位小数精度。您的号码 10153396863200835 比这个大得多。

在 double 中,我们无法表示下一个整数之前的最大整数是 9,007,199,254,740,9921。 9,007,199,254,740,993 不能用 double 表示; 9,007,199,254,740,994都可以。这是因为在这种规模下,最低有效位的值是小数点后 2 位。你走得越远,这些差距就越大,因为最低有效位开始值小数点 4,然后是 8,然后...

<小时/>

现代 JavaScript 有一个方便的常量来表示该值之前的值,9,007,199,254,740,991:Number.MAX_SAFE_INTEGER。它被定义为 double 中的最后一个整数,其中加 1 给出下一个连续的整数。这个名称​​稍微具有误导性,因为 9,007,199,254,740,994 或实际上 10,153,396,863,200,836 不会突然停止拥有这些值,只是它们的数学开始变得......有趣。

关于javascript - 为什么 javascript Number 函数返回该数字的错误值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38372658/

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