• 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)
  • 相关阅读:
    linux安装git
    安装tidb数据库
    docker的简单操作和端口映射
    zabbix的简单操作(查看监控,自定义监控和钉钉监控报警)
    zabbix简单的操作(添加主机)
    LINQ 函数的实战演练测试
    C#基础:LINQ 查询函数整理
    C#中的LINQ
    C#高级编程笔记 2016年10月26日 MVC入门 Controller
    委托、Lambda表达式和事件
  • 原文地址:https://www.cnblogs.com/shuyichao/p/10384332.html
Copyright © 2020-2023  润新知