zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    在Centos7下源代码安装配置Nginx
    mysql5.7.21源码安装
    数据库设计三大范式
    电商项目中使用Redis实现秒杀功能
    PHP和Redis实现在高并发下的抢购及秒杀功能示例详解
    PHP面向对象(抽象类与抽象方法、接口的实现)
    php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
    利用VHD虚拟文件加密自己的个人信息
    Chrome常用快捷键
    stl本子
  • 原文地址:https://www.cnblogs.com/shuyichao/p/10384332.html
Copyright © 2011-2022 走看看