如何在python中找到最接近10的倍数或更高的倍数

时间:2017-01-25 13:41:25

标签: python rounding floor ceil

我有一个small task,我将数字四舍五入到十的倍数。但是想把它四舍五入到最接近的十倍。

我的代码:

import math

a = map(int,list(str(7990442)))
b = map(int,list(str(1313131)))
print "a :",a
print "b :",b

l= []
for p,q in zip(a,b):
    l.append(p*q)
print "prod list :",l
ls = sum(l)
print "sum :",ls
def roundup(x):
    return int(math.ceil(x / 10.0)) * 10
top = roundup(ls)
print "round value: ",top
val = top-ls
print "val :",val
a.append(val)
print "output :",a

输出

a : [7, 9, 9, 0, 4, 4, 2]
b : [1, 3, 1, 3, 1, 3, 1]
prod list : [7, 27, 9, 0, 4, 12, 2]
sum : 61
round value:  70
val : 9
output : [7, 9, 9, 0, 4, 4, 2, 9]

预期输出:

sum : 61
round value:  60
val : 1
output : [7, 9, 9, 0, 4, 4, 2, 1]

3 个答案:

答案 0 :(得分:4)

您可以使用round(x / 10.0) * 10代替math.ceil

更容易

def custom_round(x):
    return int(round(x, -1))

这会立即变为十的倍数。

答案 1 :(得分:1)

出于一般目的,给base舍入到:

def my_special_round(x, base=10):
    return int(base * round(float(x)/base))

答案 2 :(得分:1)

要找到10的最小倍数,我会做这样的事情。这样我甚至不必使用Math Lib:

while True:
    n=int(input("number"))
    n=n/10
    n=int(n) # it removes decimal
    n=n*10 #then by make it times 10 to return to proportion
    print(n)

在此代码中,我使用int转换来删除单元

如果你想找到最近的(包括最上面的一个) 您可以使用if单位大于5,然后添加一个

while True:
    n=int(input("number"))
    if (n%10>5):
        n=n+10
    n=n/10
    n=int(n)
    n=n*10
    print(n)