机器epsilon在简单算术中的行为

时间:2016-10-01 20:20:15

标签: python python-2.7 floating-point

*使用python x2

我的作业要求我设置:eps = 2. ** - 52 然后,eps的输出变为:2.2204e-16

(1。+ eps - 1. = 2.2204e-16)#expected

(1。+ eps / 2。 - 1. = 0.0)#what?

我的作业只是问我在第二个等式中发生了什么。我已经为花车试验了不同的sigfigs,并审查了资源,但仍然不明白。任何帮助非常感谢!

1 个答案:

答案 0 :(得分:0)

(1 + eps/2.0) - 1 = 0.0因为eps/2.0太小而无法与1一起正确表示(称为吸收取消

在运行Python的典型计算机上,Python浮点数有53位精度可用。如果你想进一步,Python将消除最小的部分,以便可以正确表示数字。

在这种情况下,1“胜出”(1“吸收”eps/2),然后减去1,你得到0。