码迷,mamicode.com
首页 > 编程语言 > 详细

改写python round()函数,解决四舍五入问题 round(1.365,2)=1.36

时间:2018-11-25 16:19:01      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:size   .com   ima   error   整数   函数   col   datax   ret   

 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))

技术分享图片

 

改写python round()函数,解决四舍五入问题 round(1.365,2)=1.36

标签:size   .com   ima   error   整数   函数   col   datax   ret   

原文地址:https://www.cnblogs.com/dinghanhua/p/10015454.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!