半浮點數進行捨去
Python 中的round() 函數在半浮點數進行捨入時表現出一種不尋常的行為,這可能會令人困惑。讓我們更詳細地檢查此行為。
<code class="python">for i in range(1, 15, 2): n = i / 2 print(n, "=>", round(n))</code>
此程式碼列印:
0.5 => 0 1.5 => 2 2.5 => 2 3.5 => 4 4.5 => 4 5.5 => 6 6.5 => 6
與預期相反,浮點數值並不總是向上捨入。相反,即使對於半值,它們也會四捨五入到最接近的偶數。此行為記錄在Python 文件中的「數字類型」下:
「round(x[, n])
x 四捨五入到n 位,四捨五入到偶數。如果省略n ,預設預設為0。
獲得更多對舍入的控制舍入行為中,decimal 模組提供了更靈活的方法。以下範例示範如何使用十進位模組從一半向上捨入:
輸出:<code class="python">from decimal import localcontext, Decimal, ROUND_HALF_UP with localcontext() as ctx: ctx.rounding = ROUND_HALF_UP for i in range(1, 15, 2): n = Decimal(i) / 2 print(n, '=>', n.to_integral_value())</code>
0.5 => 1 1.5 => 2 2.5 => 3 3.5 => 4 4.5 => 5 5.5 => 6 6.5 => 7
以上是為什麼 Python 要將半浮點數捨入為偶數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!