数字修约值

数字修约  4舍6入 5看后  没后就看单双
def rv(a,k):

a = str(a)
if "." in a:
b = a.find(".")
if len(a[b + 1:]) <= k: # 防止低位小数修正为高位小数
a = a + "0" * (k - len(a[b + 1:]))
else:
m = a[b + k+1:]
if int(m) > 5 * 10 ** (len(a) - (b + k + 2)):
if a[b + k] == ".":
a = a[:b + k - 1] + str(int(a[b + k - 1]) + 1)
else:
a = str(int(a[:b+k+1].replace(".", ""))+1)
a = a[:b] + "."+a[b:]
elif int(m) == 5 * 10 ** (len(a) - (b + k + 2)):
if a[b + k] == ".":
if int(a[b + k - 1]) / 2 == 0:
a = a[:b + k]
else:
a = str(int(a[:b + k + 1].replace(".", "")) + 1)
a = a[:b] + "." + a[b:]
elif int(a[b + k]) / 2 == 0:
a = a[:b + k + 1]
# print(a)
else:
a = a[:b + k] + str(int(a[b + k]) + 1)
else:
if a[b + k] == ".":
a = a[:b + k]
else:
a = a[:b + k + 1]
else:
if k > 0:
a = a + "." + "0" * k
elif k == 0:
a = a
return a
for jj in range(15):
print(jj,rv(1.99999998888,jj))

猜你喜欢

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