gpt4 book ai didi

javascript - 处理浮点错误的最佳方法是什么?

转载 作者:搜寻专家 更新时间:2023-11-01 04:36:31 26 4
gpt4 key购买 nike

所以我有一个 Javascript 脚本,它在一个循环中将小分数加在一起,它可能会将 0.2 添加到 0.1。然后将该值提供给另一个函数,但问题是我需要准确提供 0.3 而不是 0.30000000000000004。

确保数字正确且准确的最简单方法是什么。请注意,将 0.25+0.125 等添加到简单四舍五入到小数点后一位并不能解决问题。

也有可能添加 0.2 + 0.10000000000000004,尽管这是非常非常不可能的!

最佳答案

在通用浮点运算中没有避免舍入误差的简单方法。数字 0.3 没有精确的二进制浮点表示。

我建议阅读 What Every Computer Scientist Should Know About Floating-Point Arithmetic熟悉数字的浮点表示所固有的权衡。

要真正解决您的问题,您应该问自己几个问题:

  • 您对精度的要求有多严格?为什么 0.30000000000000004 超出了您的误差范围?是否可以接受对结果进行四舍五入?
  • 有没有什么方法可以表示数字并用整数执行大部分算术运算?例如。如果您知道您只会遇到有理数,则可以使用整数商和整数分母来表示它们。从那里,您可以尝试尽可能长时间地推迟转换为 float ,以防止累积舍入错误。
  • 如果您不能对整数进行计算,是否可以使用其他数据类型,例如 BigDecimal

最终,当涉及浮点精度问题时,您通常必须根据具体问题提出的要求定制解决方案。

关于javascript - 处理浮点错误的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29504989/

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