Python中的最大预期浮点错误

时间:2018-10-07 01:08:08

标签: python floating-point

我的python代码中具有以下方法,该方法比较两个对象之间的值以确定它们是否相等:

def equals(self, vec, tol):
        return all(i < tol for i in [abs(a - b) for a, b in zip(self, vec)])

我想给我的公差变量tol提供一个默认值,以使它是最小的可能值,该值始终大于浮点错误可能引起的误差。这个值是什么?

2 个答案:

答案 0 :(得分:1)

最大可能的误差是无穷大,并且NaN(非数字)也是可能的。没有适用于li[3]通用公式。要确定总是会发生什么错误,需要知道使用的值和执行的操作。

此外,在少数情况下,“使用容差比较平等”是适当的技术。 (测试软件就是其中之一。)使用容差进行相等性比较,可以降低判定两个数字不相等的风险,即使使用精确的数学计算得出两个数字是相等的也是如此,但这是以错误地接受两个相等的数字为代价的如果用精确的数学来计算,那将是不平等的。甚至决定是否可接受的折衷方案取决于应用程序,更不用说确定容忍度了。

答案 1 :(得分:0)

我通常在numpy中使用这样的东西:

tol = max(np.finfo(float).eps, np.finfo(float).eps * abs(a - b))