几乎可以比较花车的最佳方式是什么?
众所周知,由于四舍五入和精确性问题,比较花车平等是有点费劲。
例如:https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
在Python中处理这个问题的建议方法是什么?
这个地方肯定有一个标准的库函数?
Python 3.5添加了PEP 485中描述的math.isclose
和cmath.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