- 数字的四舍五入
- 问题:
- 对浮点数执行指定精度的舍入运算
- 解决方案:
- 对于简单的舍入运算,使用内置的round(value, ndigits)函数即可。比如:
round(1.23, 1) # 1.2
round(1.27, 1) # 1.3
- 传给round()函数的 ndigits 参数可以是负数,这种情况下,舍入运算会作用在十位、百位、千 位等上面。比如:
a = 1627731
round(a, -1) # 1627730
round(a, -2) # 1627700
round(a, -3) # 1628000
- 讨论: 不要将舍入和格式化输出搞混了。如果只是简单的输出一定宽度的数,不需要使用round()函 数。仅仅需要在格式化的时候指定精度即可。比如:
x = 1.23456
format(x,"0.3f") # 1.235
-
(这不还是舍入吗?书上是这么说的。暂时笔记就这么做吧)
-
同样,不要试着舍入浮点值来“修正”表面上看起来正确的问题。比如:
a = 2.1
b = 4.2
c = a + b # 6.300000000000001
c = round(c, 2) # 6.3
-
(可是,我明明要求保留两位小数,怎么结果是1位呢?先这么着吧,看看后面怎么说)
-
对于大多数使用浮点的程序,没有必要也不推荐这样做。尽管在计算的时候会有小小的误差,但是这些 小的误差是能被理解和容忍的。如果不能允许这样的小误差,那么就要考虑使用 decimal 模块了。