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)