Python round 函数
上次修改时间:2025 年 4 月 11 日
这份全面的指南探讨了 Python 的 round
函数,该函数返回一个四舍五入到指定位数的浮点数。我们将介绍基本用法、精度控制以及数字四舍五入的实际示例。
基本定义
round
函数返回一个四舍五入到小数点后指定位数的浮点数。 如果没有给出精度,则四舍五入到最接近的整数。
主要特征:适用于数字,遵循“四舍六入五成双”规则(银行家舍入),并且在指定精度时返回一个浮点数。
基本四舍五入用法
以下是使用不同数字的简单用法,展示了 round
如何处理各种情况,无论是否指定精度。
# Rounding to nearest integer print(round(3.14)) # 3 print(round(3.5)) # 4 (note: bankers rounding) print(round(3.6)) # 4 print(round(-3.14)) # -3 print(round(-3.5)) # -4 # Rounding with precision print(round(3.14159, 2)) # 3.14 print(round(3.14159, 3)) # 3.142
此示例展示了 round
使用不同的数字。 如果没有精度,它将四舍五入到最接近的整数。 请注意 0.5 情况下的银行家舍入。
使用精度参数,它将四舍五入到指定的十进制位。 即使使用指定的精度四舍五入到整数,该函数也会返回一个浮点数。
银行家舍入解释
Python 使用“四舍六入五成双”(银行家舍入),它最大限度地减少了统计运算中的偏差。 此示例演示了该行为。
print(round(2.5)) # 2 (rounds to even) print(round(3.5)) # 4 (rounds to even) print(round(4.5)) # 4 (rounds to even) print(round(5.5)) # 6 (rounds to even) print(round(-2.5)) # -2 print(round(-3.5)) # -4
银行家舍入将 0.5 情况四舍五入到最接近的偶数。 这与传统的“四舍五入”不同,但提供了更好的统计属性。
相同的规则适用于负数。 请注意 -2.5 如何四舍五入为 -2(最接近的偶数),而不是 -3。
精度控制
精度参数控制小数点后保留多少位数字。 此示例显示了各种精度级别。
pi = 3.141592653589793 print(round(pi, 0)) # 3.0 print(round(pi, 1)) # 3.1 print(round(pi, 2)) # 3.14 print(round(pi, 3)) # 3.142 print(round(pi, 4)) # 3.1416 # Negative precision rounds to left of decimal print(round(12345, -1)) # 12340 print(round(12345, -2)) # 12300 print(round(12345, -3)) # 12000
正精度值在小数点后四舍五入,而负值在小数点左侧四舍五入(十位、百位等)。
请注意,precision=0 返回一个浮点数 (3.0),而不是一个整数,这与未指定精度时(返回一个整数)不同。
浮点考虑事项
由于浮点表示,某些结果可能会令人惊讶。 此示例演示了四舍五入可能无法按预期运行的情况。
print(round(2.675, 2)) # 2.67 (not 2.68) print(round(0.1 + 0.2, 1)) # 0.3 (as expected) # Explanation from decimal import Decimal print(Decimal(2.675)) # Shows actual stored value
第一个示例显示 2.675 向下舍入为 2.67 而不是向上舍入为 2.68。 发生这种情况是因为 2.675 无法以二进制浮点精确表示。
对于精确的十进制运算,请考虑使用 decimal
模块,该模块提供精确的十进制表示和舍入。
实际应用:财务计算
此示例演示了在财务计算中使用 round
,其中通常需要精确的舍入。
def calculate_interest(principal, rate, years): return round(principal * (1 + rate/100)**years, 2) def calculate_monthly_payment(principal, rate, months): monthly_rate = rate / 100 / 12 payment = principal * monthly_rate / (1 - (1 + monthly_rate)**-months) return round(payment, 2) print(calculate_interest(1000, 5, 10)) # 1628.89 print(calculate_monthly_payment(10000, 7.5, 60)) # 200.38
财务计算通常需要将货币四舍五入到小数点后 2 位。 当精确精度不是至关重要时,round
函数非常适合此目的。
对于需要精确十进制表示的银行应用程序,建议使用具有基于上下文的舍入的 decimal
模块。
最佳实践
- 了解银行家舍入:注意四舍六入五成双的行为
- 指定精度:始终指定精度以保持清晰
- 考虑使用 decimal 模块:用于精确的十进制运算
- 记录舍入行为:尤其是在财务代码中
- 测试边缘情况:验证 0.5 情况下的行为
资料来源
作者
列出所有 Python 教程。