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

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

当前回答

的值加上0.5,可以“欺骗”int()使其舍入而不是舍入 传递给int()的数字。

其他回答

的值加上0.5,可以“欺骗”int()使其舍入而不是舍入 传递给int()的数字。

我想还没有人写过这个,但你可以这样做:

round(12, -1) --> 10
round(18, -1) --> 20

舍入到非整数值,例如0.05:

def myround(x, prec=2, base=.05):
  return round(base * round(float(x)/base),prec)

我发现这很有用,因为我只需要在代码中进行搜索和替换,就可以将“round(”更改为“myround(”,而不必更改参数值。

那么这个呢:

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

对于整数和Python 3:

def divround_down(value, step):
    return value//step*step


def divround_up(value, step):
    return (value+step-1)//step*step

生产:

>>> [divround_down(x,5) for x in range(20)]
[0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15]
>>> [divround_up(x,5) for x in range(20)]
[0, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 20, 20, 20, 20]