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

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

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

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

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

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

在我的机器上:

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

样本测试代码

import mathimport sysm = sys.float_info.max  # type 'float'eps = sys.float_info.epsilonprint(m == m-(m*(eps/10)))   # Trueprint(m == m-(m*eps))        # False

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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5632533.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存