首頁 >後端開發 >Python教學 >為什麼 Python 要將半浮點數捨入為偶數?

為什麼 Python 要將半浮點數捨入為偶數?

Linda Hamilton
Linda Hamilton原創
2024-10-17 15:53:29810瀏覽

Why Does Python Round Half-Floats to Even Numbers?

半浮點數進行捨去

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>

透過調整localcontext() 中的捨入參數,您可以自訂舍入依需求進行行為,確保特定舍入場景的準確結果。
0.5 => 1
1.5 => 2
2.5 => 3
3.5 => 4
4.5 => 5
5.5 => 6
6.5 => 7

以上是為什麼 Python 要將半浮點數捨入為偶數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn