gpt4 book ai didi

floating-point - 计算器中有趣的 float 错误 - 为什么会发生这种情况?

转载 作者:行者123 更新时间:2023-12-03 22:42:24 26 4
gpt4 key购买 nike

如果您在 Windows 计算器中输入 1.000000000000000000000000000001,然后反复点击阶乘 (n!) 按钮,您会得到一些奇怪的结果:

1.0000000000000000000000000000001 [n!]
1 [n!]
1 [n!]
1 [n!]
0.9999999999999999999999999999997 [n!]
0.9999999999999999999999999999998 [n!]
0 [n!]
1

自己尝试一下 - 这很奇怪!

我的主要兴趣是为什么我们在倒数第二步得到零。 IEEE 浮点数的什么人工制品会导致这些问题?

最佳答案

Windows 计算器中的算术太可怕了。它不符合 IEEE 标准,事实上,它忽略了 IEEE 规范的所有教训。

或者,至少,它忽略了一个重要的教训:适当的舍入确实很重要。

尝试输入以下内容(以科学模式):

  • 4
  • 平方根(答案显示为 2)
  • -2 (-8.1648465955514287168521180122928e-39)

  • 这告诉我们关于 Windows 计算器的两件事。
  • 它计算平方根到大约 40 位精度。
  • 它无法正确舍入。

  • 40 位数比 double 高得多,有时这很好,但 squareroot(4) 表明如果没有正确的舍入,额外的“精度”可能会被误导。正确舍入基本运算(+、-、*、/)和平方根相对简单。不这样做只是草率。

    至于最初的问题,如果当计算器说答案是 1 时,如果您使用“-1”技巧来查看真实值,您将看到数字逐渐接近 1。最终,可怕的四舍五入导致它消失少于一。然后发生了一些不好的事情,它就归零了。我不知道坏事是什么,但鉴于其四舍五入不佳,发生坏事也就不足为奇了。

    关于floating-point - 计算器中有趣的 float 错误 - 为什么会发生这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14460337/

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