Python 简单算法中机器ε的行为
*使用pythonx2 我的作业要求我设置:eps=2.*-52 eps的输出随后变为:2.2204e-16 (1.+eps-1.=2.2204e-16)#预计 (1.+eps/2.-1.=0.0)#什么 我的作业只是问我第二个等式发生了什么。我已经尝试了不同的浮标符号,并查看了参考资料,但仍然不理解。非常感谢任何帮助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位精度。如果您尝试更进
(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
。啊,好的,非常感谢!