簡體   English   中英

比較 python 中的浮點值,最多保留 3 個小數位

[英]Compare Float values in python upto 3 decimal places

我正在使用np.isclose()比較 2 個浮點值,但對於某些用例,這不能按預期工作。

例如

np.isclose([1000.01], [1000.02])

返回True但它應該返回False

我無法將rtol to 0.0 ,因為我只需要將這些值比較到小數點后 3 位。

np.isclose(a, b, rtol=10**-5, atol=10**-8)檢查:

np.abs(a - b) <= (atol + rtol * np.abs(b))

這意味着對於您的值 ~1000 和默認值,如果差異是,它將返回True

<= (10**-8 + 10**-5 * np.abs(1000))
<= 0.01000001

所以你的值在那個距離之內,因此它的評估結果為真。


如果您的要求是

我只需要將這些值比較到小數點后 3 位。

那么您不需要相對容差,而只想指定絕對容差。

np.isclose([1000.01, 1000.0013, 1000.0047, 1000.0041, 1000.0045], 
           [1000.02, 1000.0014, 1000.0052, 1000.0052, 1000.005500001],
           rtol=0, atol=10**-3)

#array([False,  True,  True, False, False])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM