在浮點數中保留兩個小數點
使用浮點數時,通常希望將它們限制為特定值小數位數。但是,僅使用 round() 函數可能會導致意外結果,如以下行為所示:
>>> a 13.949999999999999 >>> round(a, 2) 13.949999999999999
出現這種情況是因為浮點數在準確表示所有數字方面存在限制。記憶體中儲存的值並不總是與顯示的值相同。
理解浮點精度
Python 中使用的雙精度浮點數大約有16 位元精度。這意味著像 13.95 這樣的數字以類似於以下的方式表示:
125650429603636838/(2**53)
應用 round() 函數時,結果仍然是相同的浮點值,內部表示具有相同的限制。
>>> 125650429603636838/(2**53) 13.949999999999999
限制小數點的替代方法
如果只顯示兩位小數是必要的,請考慮以下替代方案:
範例:
>>> a = 13.946 >>> print("%.2f" % a) 13.95 >>> print("{:.2f}".format(a)) 13.95 # Using decimal module >>> import decimal >>> a = decimal.Decimal('13.946') >>> a.quantize(decimal.Decimal('.01')) Decimal('13.95')
以上是如何在 Python 中可靠地保留浮點數中的兩位小數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!