1

我有两个号码——

3.125000 MB 和 2.954880 MB。

我想比较它们,它应该返回 True,因为它们几乎是 3Mbytes。我如何在 Python3 中这样做。

我试着做math.isclose(3.125000,2.954880, abs_tol=0.1)

但是,这会返回False。我真的不明白如何把宽容放在这里。

math.isclose(3.125000,2.954880,  abs_tol=0.1). 

https://docs.python.org/3/library/math.html

math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)

我正在使用 Python 3.5.2。

预期的结果是True。实际结果是False

4

2 回答 2

3

您的绝对容差设置为0.1,因此差异必须小于0.1认为它们相等;3.125000 - 2.954880is (rounded) 0.17012,太大了。

如果您希望他们被考虑close,请稍微增加您的容忍度,例如:

math.isclose(3.125000, 2.954880, abs_tol=0.2)

True如您所愿返回。

于 2019-03-27T20:27:08.833 回答
1

该函数math.isclose实际上是用来处理浮点不精确的。你可以使用它,但你需要适当地调整它:你的例子中的数字不仅仅是0.1分开的。

如果您不担心浮点不精确,比较它们的更好方法是显而易见的:

def equivalent(a, b):
    return abs(a-b) < 0.1
于 2019-03-27T20:27:59.190 回答