在 Python 中比较浮点数是否几乎相等的最佳方法是什么?

2024-05-12

众所周知,由于舍入和精度问题,比较浮点数是否相等有点繁琐。

例如:比较浮点数,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(使用前将#替换为@)

在 Python 中比较浮点数是否几乎相等的最佳方法是什么? 的相关文章

随机推荐