Python四舍五入

round实现的是四舍六入,用decimal或自己封装:

import decimal

# 修改舍入方式为四舍五入
decimal.getcontext().rounding = "ROUND_HALF_UP"

x = "0.645"
x1 = decimal.Decimal(x).quantize(decimal.Decimal("0.00"))
print(f"{x} 的近似值为 {x1}")
y = "2.5"
y1 = decimal.Decimal(y).quantize(decimal.Decimal("0"))
print(f"{y} 的近似值为 {y1}")

自己封装,等于5时改成6再用round:

def rounding(num, n=0):
    """
    功能:优化Python内置的round()函数有时出现四舍六入的问题,实现真正的四舍五入。
    实现原理:当需要四舍五入的小数点后一位是5时,加1变成6,即可顺利利用round()函数,实现真正的四舍五入。
    参数:
        num: 需要四舍五入的数字;
        n: 保留的小数点位数,默认取整。
    """

    if '.' in str(num):
        if len(str(num).split('.')[1]) > n and str(num).split('.')[1][n] == '5':
            num += 10 ** -(n + 1)
    if n:
        return round(num, n)
    else:
        return round(num)

你可能感兴趣的:(python,开发语言)