python实现四舍五入

由于python的round进行四舍五入时是遇六进一而不是遇五进一,所以要从新编写一个算法
具体代码如下

#coding:utf-8
class round(object):
    #返回浮点数类型的值
    def roundF(self, value, digit):
        result = str(value)
        if (float(value) < 0):
            result = result[1:]
            if (result != ''):
                indexDec = result.find('.')
                if (indexDec > 0):
                    decimal = result[indexDec + 1:]
                    decimalCount = len(decimal)
                    if (decimalCount > digit):
                        xiaoshu = result[indexDec + digit + 1]  # 第digit+1位小数
                        if (int(xiaoshu) > 4):
                            result = str(float(value) * -1 + pow(10, digit * -1))
                            # 存在进位的可能,小数点会移位
                            indexDec = result.find('.')
                            result = result[:indexDec + digit + 1]
                        else:
                            result = result[:indexDec + digit + 1]
                    else:
                        lens = digit - len(result[indexDec:]) + 1
                        for i in range(lens):
                            result += '0'
            result = float(result) * -1
            return result
        else:
            if (result != ''):
                indexDec = result.find('.')
                if (indexDec > 0):
                    decimal = result[indexDec + 1:]
                    decimalCount = len(decimal)
                    if (decimalCount > digit):
                        xiaoshu = result[indexDec + digit + 1]  # 第digit+1位小数
                        if (int(xiaoshu) > 4):
                            result = str(float(value) + pow(10, digit * -1))
                            # 存在进位的可能,小数点会移位
                            indexDec = result.find('.')
                            result = result[:indexDec + digit + 1]
                        else:
                            result = result[:indexDec + digit + 1]
                    else:
                        lens = digit - len(result[indexDec:]) + 1
                        for i in range(lens):
                            result += '0'
            return float(result)

    #返回字符串类型的值
    def roundStr(self,value, digit):
        result = str(value)
        if (float(value) < 0):
            result = result[1:]
            if (result != ''):
                indexDec = result.find('.')
                if (indexDec > 0):
                    decimal = result[indexDec + 1:]
                    decimalCount = len(decimal)
                    if (decimalCount > digit):
                        xiaoshu = result[indexDec + digit + 1]  # 第digit+1位小数
                        if (int(xiaoshu) > 4):
                            result = str(float(value) * -1 + pow(10, digit * -1))
                            # 存在进位的可能,小数点会移位
                            indexDec = result.find('.')
                            result = result[:indexDec + digit + 1]
                        else:
                            result = result[:indexDec + digit + 1]
                    else:
                        lens = digit - len(result[indexDec:]) + 1
                        for i in range(lens):
                            result += '0'
            # result = float(result) * -1
            return '-'+result
        else:
            if (result != ''):
                indexDec = result.find('.')
                if (indexDec > 0):
                    decimal = result[indexDec + 1:]
                    decimalCount = len(decimal)
                    if (decimalCount > digit):
                        xiaoshu = result[indexDec + digit + 1]  # 第digit+1位小数
                        if (int(xiaoshu) > 4):
                            dg=pow(10, digit * -1)
                            result = str(float(value) +dg )
                            # 存在进位的可能,小数点会移位
                            indexDec = result.find('.')
                            result = result[:indexDec + digit + 1]
                        else:
                            result = result[:indexDec + digit + 1]
                    else:
                        lens = digit - len(result[indexDec:]) + 1
                        for i in range(lens):
                            result += '0'
            return result

if __name__ == '__main__':
    d=round().roundStr(2346.23502,4)
    print(d)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈希哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值