欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python四舍五入

程序员文章站 2022-03-28 16:05:44
Python四舍五入的方法闲暇之余写的一个四舍五入的方法整体思路不说废话直接上代码运行结果待优化部分闲暇之余写的一个四舍五入的方法整体思路先把要保留的部分截下来,然后遍历后续小数位,最终需要进位就给保留部分+个0.x1 不需要进位就把保留部分直接返回。技艺不精,若有大神路过轻喷~不说废话直接上代码def new_type(testNum,b=2): """ :param testNum: 原数字 :param b: 保留位数 :return: 四舍五入后的结果...

闲暇之余写的一个四舍五入的方法

整体思路

先把要保留的部分截下来,然后遍历后续小数位,最终需要进位就给保留部分+个0.x1 不需要进位就把保留部分直接返回。技艺不精,若有大神路过轻喷~

不说废话直接上代码

def new_type(testNum,b=2):
    """
    :param testNum: 原数字
    :param b: 保留位数
    :return: 四舍五入后的结果
    """
    testNum = str(testNum)
    pointIndex =  testNum.find(".") # 获取原数据小数点下标index
    if pointIndex == -1:
        return testNum
    splList = testNum.split(".") # 分割整数和小数部分
    if len(splList[1])<=b:
        return testNum
    staticNum = testNum[0:(pointIndex+b+1)] # 整数.保留位数
    bsNum = list(testNum[pointIndex+b+1:]) # 待取舍部分
    bsNum.reverse() # 倒序,为了配合for in语法
    c = 0 # 遍历取舍部分,判定最终是否进1
    for i in bsNum:
        if (int(i)+c) >= 5:
            c = 1
        else:
            c = 0
    if c == 0:
        return staticNum
    # 对保留部分作进1处理
    staticNum = list(testNum[0:(pointIndex + b + 1)])
    if c == 1:
        staticNum[-1] = str(int(staticNum[-1]) + 1)
    finalNum = ""
    for i in staticNum:
        finalNum += i
    return float(finalNum)

运行结果

Python四舍五入
Python四舍五入

待优化部分

明明只想给小数点最后一位+个1,结果居然需要先转列表,取值转int+1 再转str。
然后还要再遍历一次拼接,转float。
为了加这个1,性能代价超级大,不合理

本文地址:https://blog.csdn.net/caiciacaibeiqie/article/details/109649554

相关标签: python 算法