您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么在python中,非常大的float值之间的比较会失败?

为什么在python中,非常大的float值之间的比较会失败?

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

因此,值1被吸收或取消,以便能够代表您要计算的高值。

通过减去(或加)乘以浮点epsilon的值来获得极限。

在我的机器上:

maxfloat == 1.7976931348623157e+308
epsilon == 2.220446049250313e-16

样本测试代码

import math
import sys

m = sys.float_info.max                        # type 'float'
eps = sys.float_info.epsilon

print(m == m-(m*(eps/10)))   # True
print(m == m-(m*eps))        # False

m*eps是您必须减去的最小值,以使比较失败。它总是相对于m价值。

python 2022/1/1 18:29:52 有167人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶