gpt4 book ai didi

javascript - 简单加法暴露 Javascript 引擎浮点错误

转载 作者:行者123 更新时间:2023-12-01 15:48:30 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Is floating point math broken?

(31 个回答)


8年前关闭。




在处理 measurement.js 时,TDD 的乐趣帮助我偶然发现了暴露在 javascript 引擎中的一个非常奇怪的行为(至少在我看来是这样)。

无论是进入控制台还是在脚本中执行,都会发生以下情况:

-1 + 0.85     --> -0.85               ✓  
-1 + 1 --> 0 ✓
-1 + 1 + -.15 --> 0.15 ✓
-1 + 1.15 --> 0.1499999999999999 ?!?

这是在以下浏览器/操作系统下完全测试和复制的:
  • FF 24.0 (Debian 3.10)
  • Chrome 30.0.1599.114 (Debian 3.10)
  • Chrome 30.0.1599.101m (Win7SP1)
  • Internet Explorer 10.0.9200.16721 (Win7SP1)

  • 由于这在不同的 vendor 中是一致的,我认为这一定有一个特定的原因,所以:
  • 这是什么原因?
  • 规避这种行为的最佳做法是什么,因为它会给 JS
  • 的精确计算带来问题


    更新 :
    最好的通俗易懂的解释,包括。迄今为止发现的多种编程语言的答案和解决方法
    http://floating-point-gui.de/ (感谢@RocketHazmat)

    最佳答案

    不,呃。您尝试以二为基数进行数学运算。

    简短的回答:你不能这样做。这就像试图重复添加十进制的 1/3。你得到 0.333333,然后是 0.666666,然后是 0.99999……但最后一个不应该是 3/3,换句话说 1?

    为避免此问题,请尽可能对所有内容使用整数。

    关于javascript - 简单加法暴露 Javascript 引擎浮点错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19574366/

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