守候你守候我
如果您不在同一个地方或使用完全相同的方程计算浮点数,那么此代码可能会出现假阴性(由于舍入错误)。例如:>>> 0.1 + 0.2 in [0.6/2, 0.3] # We may want this to be TrueFalse在这种情况下,我们可以只使用一个自定义的“ in”函数来实际实现这一点(在这种情况下,使用numpy.isclose代替可能更好/更快numpy.allclose):import numpy as np def close_to_any(a, floats, **kwargs): return np.any(np.isclose(a, floats, **kwargs))文档中有一个重要的说明:警告 默认atol值不适用于比较远小于 1 的数字(请参阅注释)。[...] 如果预期值明显小于 1,则可能导致误报。该注释补充说,atol与math.isclose's相反,它不是零abs_tol。如果您在使用时需要自定义容差close_to_any,请使用kwargsto passrtol和/或atoldown to numpy. 最后,您现有的代码将转换为:if close_to_any(myFloatNumber, myListOfFloats): print('Found it!')else: print('Sorry, no luck.')或者您可以有一些 options close_to_any(myFloatNumber, myListOfFloats, atol=1e-12),请注意这1e-12是任意的,除非您有充分的理由,否则不应使用此值。回到我们在第一个示例中观察到的舍入误差,这将给出:>>> close_to_any(0.1 + 0.2, [0.6/2, 0.3])True