几乎可以比较花车的最佳方式是什么?

众所周知,由于四舍五入和精确性问题,比较花车平等是有点费劲。

例如:https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/

在Python中处理这个问题的建议方法是什么?

这个地方肯定有一个标准的库函数?


Python 3.5添加了PEP 485中描述的math.isclosecmath.isclose函数。

如果您使用的是早期版本的Python,则在文档中给出等效函数。

def isclose(a, b, rel_tol=1e-09, abs_tol=0.0):
    return abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)

rel_tol是相对容差,它乘以两个参数的大小中较大的一个; 随着价值变得更大,它们之间允许的差异同样仍然被认为是相等的。

abs_tol是绝对公差,在所有情况下都按原样应用。 如果差值小于这两个公差中的任何一个,则认为这些值相等。


是否像以下那样简单不够好?

return abs(f1 - f2) <= allowed_error

我同意Gareth的答案可能最适合作为轻量级功能/解决方案。

但我认为这将有助于指出,如果您正在使用NumPy或正在考虑它,则有一个打包功能。

numpy.isclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)

尽管有一点声明:安装NumPy可能是一个不平凡的体验,具体取决于您的平台。

链接地址: http://www.djcxy.com/p/4711.html

上一篇: What is the best way to compare floats for almost

下一篇: How to disable textarea resizing?