改写python round()函数,解决四舍五入问题 round(1.365,2)=1.36
Posted dinghanhua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了改写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 not isinstance(i,int): #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))
以上是关于改写python round()函数,解决四舍五入问题 round(1.365,2)=1.36的主要内容,如果未能解决你的问题,请参考以下文章