改寫python round()函式,解決四捨五入問題 round(1.365,2)=1.36
阿新 • • 發佈:2018-11-25
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)/mielse: res = int(datax)/mi if i <= 0: res = int(res) return res
data = 1.365 print(round(data,2)) print(round_rewrite(data,2))