小编典典

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

all

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

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

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

在某个地方肯定有一个标准库函数吗?


阅读 215

收藏
2022-03-18

共1个答案

小编典典

Python 3.5
添加了math.isclosecmath.isclose函数,如PEP
485
中所述。

如果您使用的是早期版本的 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是在所有情况下按原样应用的绝对容差。如果差值小于这些容差中的任何一个,则认为这些值相等。

2022-03-18