This question already has answers here:
Is floating point math broken?

(30 个回答)


7年前关闭。




我对这种减法和求和的工作方式有点困惑:
A = 5
B = 0.1
C = A+B-A

我发现答案是 0.099999999999999645。为什么答案不是 0.1?

最佳答案

这是一个浮点舍入错误。 Python 网站有一个非常好的 tutorial on floating point numbers 解释了这是什么以及为什么会发生。

如果你想要一个确切的结果,你可以:

  • 尝试使用 decimal 模块
  • 格式化您的结果以显示一组小数位(这不能解决舍入错误):
    print "%.2f"%C

  • 我还建议阅读 Brian 的回答中的“What Every Computer Scientist should Know About Floating-Point Arithmetic”。

    10-07 23:18