改写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的主要内容,如果未能解决你的问题,请参考以下文章

Python的round()函数与数学的四舍五入的区别

Python 学习笔记常用函数

hive的floor函数,ceil函数,round函数

sql中round()函数的用法?

python内置函数

四舍五入就用round( )?Python四舍五入的正确打开方式!