如何在 Python 中對數字進行舍入(round() 函數和小數)
了解如何在 Python 中對浮點數進行舍入。了解銀行家的捨入、自訂小數精度以及用於顯示的浮點數格式。
概述
由於二進位系統儲存小數的方式(例如,「0.1 + 0.2」計算為「0.30000000000000004」),因此計算機中的浮點運算有時會導致意外的精確度問題。當向使用者呈現數字或準備指標時,對數字進行四捨五入是常見的要求。 Python 提供了多種方法來實現這一點。
主要工具是內建的「round(number, ndigits)」函數。它需要一個數字和一個可選的精度計數。如果省略“ndigits”,則四捨五入到最接近的整數。如果提供了“ndigits”,則四捨五入到小數位數。
Python 的「round()」函數的一個關鍵屬性是它使用「銀行家捨去」(四捨五入到偶數)。當一個數字恰好位於兩個整數的中間時(例如“2.5”或“3.5”),Python 會四捨五入到最接近的“偶數”數字。這意味著“round(2.5)”是“2”,“round(3.5)”是“4”。雖然在數學上公平地處理大型數據集以防止向上偏差,但對於精確的財務計算,您應該使用「小數」模組的量化工具。
程式碼和執行輸出
此腳本示範使用內建舍入函數、銀行家舍入範例和小數模組對浮點數進行舍入。
round_numbers.py
在編輯器中嘗試from decimal import Decimal, ROUND_HALF_UP
val = 3.14159
# 1. Round to nearest integer
print("Nearest Integer:", round(val))
# 2. Round to 2 decimal places
print("Two decimals:", round(val, 2))
# 3. Banker's Rounding demonstration (rounds to nearest even)
print("round(2.5):", round(2.5)) # Nearest even is 2
print("round(3.5):", round(3.5)) # Nearest even is 4
# 4. Math rounding up (Traditional rounding) using decimal module
amount = Decimal("2.5")
rounded_up = amount.quantize(Decimal("1"), rounding=ROUND_HALF_UP)
print("Decimal ROUND_HALF_UP (2.5):", rounded_up)端子輸出
Nearest Integer: 3
Two decimals: 3.14
round(2.5): 2
round(3.5): 4
Decimal ROUND_HALF_UP (2.5): 3逐步實施
- 呼叫內建的 round(number) 函數將浮點數四捨五入到最接近的整數。
- 傳遞第二個參數(例如,round(num, 2))來指定要保留的小數位數。
- 使用 ROUND_HALF_UP 的小數模組進行嚴格的財務舍入計算。
常見問題解答
為什麼 Python 中 round(2.5) 回傳 2 而不是 3?
Python 使用 Banker 舍入,將半數舍入到最接近的偶數。這可以減少統計偏差(將一半數字四捨五入總是會導致大型資料集出現輕微向上漂移)。
如何將數字始終向上或始終向下舍入?
導入 math 模組並使用 math.ceil(x) 向上舍入到下一個整數,或使用 math.floor(x) 向下舍入到上一個整數。
相關主題
推薦的 Python 資源
透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。