Python四舍五入
程序员文章站
2022-03-28 16:05:44
Python四舍五入的方法闲暇之余写的一个四舍五入的方法整体思路不说废话直接上代码运行结果待优化部分闲暇之余写的一个四舍五入的方法整体思路先把要保留的部分截下来,然后遍历后续小数位,最终需要进位就给保留部分+个0.x1 不需要进位就把保留部分直接返回。技艺不精,若有大神路过轻喷~不说废话直接上代码def new_type(testNum,b=2): """ :param testNum: 原数字 :param b: 保留位数 :return: 四舍五入后的结果...
Python四舍五入的方法
闲暇之余写的一个四舍五入的方法
整体思路
先把要保留的部分截下来,然后遍历后续小数位,最终需要进位就给保留部分+个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)
运行结果
待优化部分
明明只想给小数点最后一位+个1,结果居然需要先转列表,取值转int+1 再转str。
然后还要再遍历一次拼接,转float。
为了加这个1,性能代价超级大,不合理
本文地址:https://blog.csdn.net/caiciacaibeiqie/article/details/109649554