我在理解使用 Python 2.7 时得到的一些结果时遇到了一些麻烦。
>>> x=1
>>> e=1e-20
>>> x+e
1.0
>>> x+e-x
0.0
>>> e+x-x
0.0
>>> x-x+e
1e-20
这是直接从 Python 复制过来的。我正在上一门关于如何在 Python 上编程的类(class),但我不明白结果的差异(x+e==1,x-x+e==1e-20,但 x+e-x==0 和 e+x-x= =0).
我已经阅读了有关表示错误的 Python 教程,但我相信那里没有提到任何内容
提前致谢
请您参考如下方法:
浮点加法不是关联的。
x+e-x 被分组为 (x+e)-x。它添加 x 和 e,将结果四舍五入到最接近的可表示数字(即 1),然后从结果中减去 x 并再次四舍五入, 产生 0.
x-x+e 被分组为 (x-x)+e。它从 x 中减去 x,产生 0,并将它四舍五入到最接近的可表示数字,即 0。然后将 e 加到 0,生成 e,并将其舍入到最接近的可表示数字,即 e。
