您将要做后者。在 Python 3编程中, 给出以下示例作为比较的最准确方法
def equal_float(a, b):
#return abs(a - b) <= sys.float_info.epsilon
return abs(a - b) <= chosen_value #see edit below for more info
另外,由于epsilon是“机器可以区分两个浮点数的最小差异”,因此您需要在函数中使用<=。
:阅读下面的评论后,我回顾了这本书,它具体说:“这是一个用于比较浮标是否等于机器精度极限的简单函数”。我相信这只是将浮点数与极高精度进行比较的一个示例,但是事实上,很多浮点数计算都会引入误差,因此即使使用它也很少。我将其描述为在答案中进行比较的“最准确”的方法,从某种意义上说这是正确的,但很少比较浮点数或整数与浮点数的含义。正确的方法是基于函数的“问题域”选择一个值(例如:0.00000000001),而不使用sys.float_info.epsilon。
感谢S.Lott和Sven Marnach的更正,如果我带领任何人走错了道路,我深表歉意。