Python 简单算法中机器ε的行为

Python 简单算法中机器ε的行为,python,python-2.7,floating-point,Python,Python 2.7,Floating Point,*使用pythonx2 我的作业要求我设置:eps=2.*-52 eps的输出随后变为:2.2204e-16 (1.+eps-1.=2.2204e-16)#预计 (1.+eps/2.-1.=0.0)#什么 我的作业只是问我第二个等式发生了什么。我已经尝试了不同的浮标符号,并查看了参考资料,但仍然不理解。非常感谢任何帮助 (1+eps/2.0)-1=0.0,因为eps/2.0太小,无法与1一起正确表示(称为吸收或取消) 在运行Python的典型机器上,Python浮点值有53位精度。如果您尝试更进

*使用pythonx2

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

(1.+eps-1.=2.2204e-16)#预计

(1.+eps/2.-1.=0.0)#什么

我的作业只是问我第二个等式发生了什么。我已经尝试了不同的浮标符号,并查看了参考资料,但仍然不理解。非常感谢任何帮助

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

在运行Python的典型机器上,Python浮点值有53位精度。如果您尝试更进一步,Python将删除最小的部分,以便正确表示数字


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

eps/21.不能为零。但也可能是-1。哪里没有打字错误吗?为什么是eps-12.2204e-16?当
eps=2.*-52(几乎为零)时,我期望
eps-1.
大约为-1(这也是我的Python2.7解释器给我的)。你是说
(1+eps)-1
(1+eps/2)-1
<代码>eps-1
-0.99999999999998
,而不是
2.220446049250313e-16
。啊,好的,非常感谢!