1. 程式人生 > >改寫python round()函式,解決四捨五入問題 round(1.365,2)=1.36

改寫python round()函式,解決四捨五入問題 round(1.365,2)=1.36

 round()函式四捨五入存在一個問題,遇到5不一定進一。如下圖所示:

print(round(1.365,2)) #1.36 沒進一
print('%.2f'%1.365)
print(round(1.3651,2)) #1.37 對的
print('%.2f'%1.3651)
print(round(1.465,2)) #1.47 對的
print('%.2f'%1.465)

 

 

沒想到什麼好辦法,先改寫了一下 

def round_rewrite(data,i=0):
    '''
    四捨五入,解決round(7.35)=7.3的問題
    :param data:
    :param i: 保留的位數,預設0
    :return:
    
''' if type(i) != type(1): #i是整數 raise TypeError('the second param must be int') else: mi = 10**i datax = data*mi f = datax - int(datax) if f >=0.5: res = (int(datax)+1)/mi elif f <=-0.5: res = (int(datax)-1)/mi
else: res = int(datax)/mi if i <= 0: res = int(res) return res

 

data = 1.365
print(round(data,2))
print(round_rewrite(data,2))