问题
将一个浮点数取整到固定的小数位
解决方案
使用内建的round(value,ndigits)函数即可。
当某个值恰好是两个整数间的一半是取整操作会取到离该值最接近的那个偶数上,也就是1.5,2.5这样的值会取整到2
示例1:
print(round(1.23,1))
#1.2
print (round(1.25,1))
#1.2
print (round(-1.27,1))
#-1.3
print(round(1.5,0))
#2
print(round(2.5,0))
#2
传递给round()参数ndigits可以是负数,这种情况下会相应取整到十位、百位、千位等。示例如下:
a = 1456789
print(round(a,-1))
#1456790
print(round(a,-2))
#1456800
print(round(a,-3))
#145700
在对值输出时别把取整和格式化操作混为一谈。如果只是将数值以固定的位数输出,一般来说是用不着round()的。相反,只要在格式化时指定所需的精度就可以。示例如下:
x=1.23456
x1 = format(x,'0.2f')
#x1=1.23
此外,不要采用对浮点数取整的方式来‘修正’精度上的问题。
a = 2.1
b = 4.2
c = a+b
print(c)
#6.300000000000001
c = round(c,2)
print(c)
#6.3
如上述做法会产生误差,一般这种误差是可以忽略的。但是如果出现误差的行为非常重要,那么可以考虑使用decimal模块。
网友评论