在 Python 中,浮点数的舍入可以通过多种方式实现,具体取决于您想要的舍入模式。Python 的内置 round()
函数提供了基本的舍入功能,但如果您需要更复杂的舍入模式,可以使用 decimal
模块。
round()
函数round()
函数可以用于基本的舍入。其语法如下:
round(number, ndigits)
number
:要舍入的数字。ndigits
:要保留的小数位数(可选)。# 基本舍入
print(round(3.14159, 2)) # 输出: 3.14
print(round(2.675, 2)) # 输出: 2.67(注意:浮点数精度问题)
decimal
模块如果您需要更精确的舍入控制,可以使用 decimal
模块。该模块允许您指定舍入模式。
from decimal import Decimal, ROUND_HALF_UP, ROUND_HALF_DOWN, ROUND_CEILING, ROUND_FLOOR
# 创建 Decimal 对象
num = Decimal('2.675')
# 使用不同的舍入模式
rounded_half_up = num.quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
rounded_half_down = num.quantize(Decimal('0.01'), rounding=ROUND_HALF_DOWN)
rounded_ceiling = num.quantize(Decimal('0.01'), rounding=ROUND_CEILING)
rounded_floor = num.quantize(Decimal('0.01'), rounding=ROUND_FLOOR)
print("ROUND_HALF_UP:", rounded_half_up) # 输出: 2.68
print("ROUND_HALF_DOWN:", rounded_half_down) # 输出: 2.67
print("ROUND_CEILING:", rounded_ceiling) # 输出: 2.68
print("ROUND_FLOOR:", rounded_floor) # 输出: 2.67
如果您需要实现特定的舍入逻辑,可以自定义一个舍入函数。例如,您可以实现一个四舍五入到最近的偶数的函数(也称为“银行家舍入”):
def round_to_even(n):
return round(n) if n % 1 != 0.5 else round(n / 2) * 2
print(round_to_even(2.5)) # 输出: 2.0
print(round_to_even(3.5)) # 输出: 4.0
领取专属 10元无门槛券
手把手带您无忧上云