是否有一个内置函数可以像下面这样舍入?

10 -> 10
12 -> 10
13 -> 15
14 -> 15
16 -> 15
18 -> 20

当前回答

def round_to_next5(n):
    return n + (5 - n) % 5

其他回答

另一种方法(不需要显式的乘法或除法运算符):

def rnd(x, b=5):
    return round(x + min(-(x % b), b - (x % b), key=abs))

那么这个呢:

 def divround(value, step):
     return divmod(value, step)[0] * step

这只是一个比例的问题

>>> a=[10,11,12,13,14,15,16,17,18,19,20]
>>> for b in a:
...     int(round(b/5.0)*5.0)
... 
10
10
10
15
15
15
15
15
20
20
20

下一个5的倍数

考虑51需要转换为55:

code here

mark = 51;
r = 100 - mark;
a = r%5;
new_mark = mark + a;

对不起,我想对阿洛克辛格海的回答发表评论,但由于缺乏声誉,它不让我评论=/

总之,我们可以再归纳一步:

def myround(x, base=5):
    return base * round(float(x) / base)

这允许我们使用非整数进制,如。25或任何其他分数进制。