Python 浮點舍入錯誤
Python 中的浮點數可能會導致意外的捨入錯誤。了解浮點運算的限制至關重要。
在提供的程式碼中,錯誤源自於以下事實:某些數字無法完全表示為浮點數。從整數轉換為浮點數並除以 100 時,所得數字為近似值。在本例中,0.29 和 0.58 的近似值分別更接近 0.28 和 0.57,產生相同的檔案名稱。
這種行為不是系統性的,因為它只影響某些無法使用冪準確表示的數字兩個。為了示範這一點,建立了以下 Python 腳本:
import sys n = int(sys.argv[1]) for i in range(0, n + 1): a = int(100 * (float(i) / 100)) if i != a: print i, a
針對不同的 n 值執行此腳本顯示舍入誤差不遵循特定模式。
根本原因這個問題在於浮點運算的本質。有關更多信息,請參閱“每個計算機科學家應該了解的浮點運算知識”。本文提供了有關浮點運算的複雜性和局限性的寶貴見解。
以上是為什麼 Python 的浮點數會產生意外的捨入誤差?的詳細內容。更多資訊請關注PHP中文網其他相關文章!