前置
- python有内置函数round
round() 采用四色六入的方式,不填第二个参数,默认保留整数。那么你要问为什么不是我们常用的四舍五入呢?
是这样的,python设计者认为四舍五入不科学,而采用四舍六入,当五时按照整数位的奇偶进位。(奇进位)
解决方案
1.使用内置库
- 使用decimal库中的quantize()
- from decimal import *
2.自建函数
- 使用python的字符先判断进位是否为5,是+1,否使用round():
def f(num,exp=0):
frac = str(num).split('.')[1]
re = -1
if len(frac)>exp:
if frac[exp]=='5':
re = round(num+10**(-(exp+1)),exp)
else:
re = round(num,exp)
if exp == 0:
return int(re)
return re
print(f(2.45))