众所周知,由于舍入和精度问题,比较浮点数是否相等有点繁琐。
例如:比较浮点数,2012 年版 https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
在 Python 中处理这个问题的推荐方法是什么?
某个地方有这个标准库函数吗?
Python 3.5 添加了math.isclose and cmath.isclose功能 https://docs.python.org/3/whatsnew/3.5.html#pep-485-a-function-for-testing-approximate-equality如中所述PEP 485 http://www.python.org/dev/peps/pep-0485.
如果您使用的是早期版本的 Python,则等效函数在文档 https://www.python.org/dev/peps/pep-0485/#proposed-implementation.
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
是在所有情况下按原样应用的绝对容差。如果差值小于任一容差,则这些值被视为相等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)