gpt4 book ai didi

JavaScript 浮点好奇心

转载 作者:行者123 更新时间:2023-11-29 22:22:54 25 4
gpt4 key购买 nike

我尝试做一些浮点比较,这是我发现的:

130 === 130.000000000000014210854715 // true
130 === 130.000000000000014210854716 // false
9 === 9.0000000000000008881784197001 // true
9 === 9.0000000000000008881784197002 // false
0.1 === 0.100000000000000012490009027033 // true
0.1 === 0.100000000000000012490009027034 // false

我尝试在 Firefox 和 Chrome 上运行它们,结果相同。好的,我知道 float 比较是一种不好的做法,并且会出现意外行为。但我只是好奇那些数字,为什么或如何计算这些小数位序列?

如果您希望甚至可以进一步扩展这些序列(类似于二进制搜索下一个序列)。

最佳答案

小数部分超出了 JavaScript 的 Number 的精度类型。

JavaScript 只能处理 130.0000000000000你号码的一部分,所以它变成了130 (那些 0 没有意义)。

每个 Number在 JavaScript 中实际上是 64 位 IEEE-754 float ,所以数字 130.000000000000014210854715看起来像二进制...

0,10000000110,10000010000000000000000000000000000000000000000000000

组是符号(+-)、指数和尾数。

你可以看到数字130是一样的……

0,10000000110,10000010000000000000000000000000000000000000000000000 

你需要一个 128 位的 Number为了使 JavaScript 能够区分这两个数字,请使用 float128 implementation。对于 JavaScript 或 bignum .

关于JavaScript 浮点好奇心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11339431/

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