我必須比較兩個數字。其中一個來自Regulat python代碼,另一個來自numpy。調試器顯示它們具有相同的值'29.0',但第一種類型爲float
,第二種類型爲float64
,所以a == b
和a - b == 0
爲False
。我該如何處理它?有沒有什麼辦法可以強制一個普通的python變量默認爲float64
或numpy使用float
?在Python中比較`float`和`float64`
更新:所有這些值的最後來自同一個文件,其中29.0
被寫入,所以我不認爲數值有差異。
由於精度錯誤,通常比較任何兩個浮點數與'a == b'或'a - b == 0'是一個壞主意。嘗試做一些像「abs(a - b)<1e-8」之類的東西。 – wflynny
浮點表示和算術不準確(mantisse和truncature pb)。設置最大差異的ε(通常爲10e-10)。 – lucasg
雖然這些評論通常都是正確的,但如果它來自一個可能是ASCII格式的文件,我無法想象出值爲29.0的精確錯誤。可以精確地表示29.0。 – glglgl