Python 的四舍五入主要有两种方式;
- 内置函数 round(number[, ndigits])
- 使用 Decimal
先说结论:
如果是对金额的四舍五入,不建议使用内置函数,原因如下:
使用round方法:
python3中的round函数对浮点数进行四舍五入的规则:
- 参数ndigits 不为 0 的情况
如果保留位数的后一位小于等于 4,则舍去
如果保留位数的后一位等于 5,且该位数后面没有数字,则不进位
如果保留位数的最后一位等于 5,且该位数后面有数字,则进位
如果保留位数的最后一位大于等于 6 ,则进位
- 参数ndigits 为 0 或 None 的情况
如果保留位数的后一位小于等于 4,则舍去
如果保留位数的后一位等于 5,且后面没有数字,则取最近的偶数
如果保留位数的后一位等于 5,且后面有数字,则进位
如果保留位数的最后一位大于等于 6 ,则进位
使用Decimal:
使用Decimal,必须先把小数转换成字符串,这样才可以精确的表示浮点数;
def round2():
import decimal
# 修改舍入方式为四舍五入
decimal.getcontext().rounding = "ROUND_HALF_UP"
x = "0.525"
x1 = decimal.Decimal(x).quantize(decimal.Decimal("0.00"))
print(f"{x} 的四舍五入为 {x1}")
y = "5.5"
y1 = decimal.Decimal(y).quantize(decimal.Decimal("0"))
print(f"{y} 的四舍五入为 {y1}")
round2()