Python进阶编程:编写更高效、优雅的Python代码
上QQ阅读APP看书,第一时间看更新

1.4.1 四舍五入运算

在实际应用中,我们经常需要对浮点数执行指定精度的四舍五入运算,以免小数位数过多。

对于简单的四舍五入运算,使用内置的round(value,ndigits)函数即可实现,代码(number_round.py)示例如下:


print(round(1.23, 1))
print(round(1.28, 1))
print(round(-1.27, 1))
print(round(1.25361,3))

执行py文件,输出结果如下:


1.2
1.3
-1.3
1.254

当一个值刚好在两个边界的中间时,round()函数返回离它最近的偶数。例如,对于1.5或者2.5的舍入运算,使用round()函数的输出结果是2。

传给round()函数的ndigits参数可以是负数。这种情况下,舍入运算会作用在十位、百位、千位等,相关代码(number_round.py)示例如下:


a = 1627731
print(round(a, -1))
print(round(a, -2))
print(round(a, -3))

执行py文件,输出结果如下:


1627730
1627700
1628000

不要将舍入和格式化输出混淆了。如果只是输出一定长度的数,不需要使用round()函数,只需要在格式化的时候指定精度即可,相关代码(number_round.py)示例如下:


x = 1.23456
print(f'{x: 0.2f}')
print(f'{x: 0.3f}')

执行py文件,输出结果如下:


1.23
1.235

同样,不要试着去舍入浮点值来修正表面上看起来正确的代码,相关代码(number_round.py)示例如下:


a = 2.1
b= 4.2
c = a + b
print(c)
print(round(c, 2))

执行py文件,输出结果如下:


6.300000000000001
6.3

大多数情况下没有必要使用浮点数,我们也不推荐这样做,因为在计算的时候出现的小误差是能被理解与容忍的。如果不能允许这样的小误差(比如涉及金融领域),那么就得考虑使用decimal模块了。