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)
  • 相关阅读:
    delphi 获取图片某一像素的颜色值
    delphi常用快捷键(我自己经常使用的)
    115.css的initial、inherit、unset
    菜鸡前端的配色记录-echart比较好看的配色
    114.关于前端的vertical-align详解
    Problem
    Oracle从入门到入门的学习历程
    使用navicat连接oracleXE
    使用ElementUI遭遇问题记录
    SonarQube遇见的问题
  • 原文地址:https://www.cnblogs.com/shuyichao/p/10384332.html
Copyright © 2011-2022 走看看