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

Linda Hamilton
發布: 2024-10-17 15:53:29
原創
784 人瀏覽過

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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板