修约值 4舍6入 5看

def rr(L,a):
if str(a).isdigit():
L = str(L)
print("L is",L)
k = L.find(".")
#没有小数点
if k == -1:
if a > 0:
xc = L+"."+"0"*a
else:
xc = L
print("L为整数修正",xc)
#有小数点
else:
#小数点后位数不够添加0
if len(L[k+1:]) <= a:
xc = L+"0"*(a-len(L[k+1:]))
print("L 小数位不够 添加0",xc)
else:
#正式进入4舍6入5看
if int(L[k+a+1]) >= 6:
xx = int(L[:k+a+1].replace(".", ""))+1
xc = str(xx)[:k]+"."+str(xx)[k:]
print("执行6入",xc)
elif int(L[k+a+1]) <= 4:
xc = L[:k+a+1]
print("执行4舍",xc)
else:
if L[k+a+2:] != ""and int(L[k+a+2:]) > 0:
xx = int(L[:k+a + 1].replace(".", "")) + 1
xc = str(xx)[:k] + "." + str(xx)[k:]
print("执行5模式后面有数 修约值为",xc)
else:
if int(L[k+a]) % 2 == 0:
xc = L[:k + a + 1]
print("执行5前面为偶数舍弃",xc)
else:
xx = int(L[:k + a + 1].replace(".", "")) + 1
xc = str(xx)[:k] + "." + str(xx)[k:]
print("执行5前面为奇数 增加",xc)
else:
xc = "参数输入有误"
return xc
#print(rr(69999.9996,3))
#print(rr(69.9994,3))
#print(rr(6999.9995,3))
#print(rr(6999.9945,3))
print(rr(699.994500,3))
#rr(6999.000,3)
#rr(69.994,3)
没有对输入的L 进行处理

猜你喜欢

转载自www.cnblogs.com/hengkuamalu/p/12034374.html