一尘不染

在Python中,比较float与几乎相等的最佳方法是什么?

python

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

当然在某个地方有一个标准的库函数吗?


阅读 557

收藏
2020-02-08

共1个答案

一尘不染

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

2020-02-08