是否有一个内置函数可以像下面这样舍入?
10 -> 10
12 -> 10
13 -> 15
14 -> 15
16 -> 15
18 -> 20
是否有一个内置函数可以像下面这样舍入?
10 -> 10
12 -> 10
13 -> 15
14 -> 15
16 -> 15
18 -> 20
当前回答
我需要四舍五入到前面的5。
举个例子,16发到15发或者19发到15发
下面是使用的代码
def myround(x,segment):
preRound = x / segment
roundNum = int(preRound)
segVal = segment * roundNum
return segVal
其他回答
我不知道Python中的标准函数,但这对我来说是可行的:
Python 3
def myround(x, base=5):
return base * round(x/base)
很容易理解为什么上面的方法是有效的。你要确保你的数字除以5是一个整数,四舍五入正确。所以,我们首先做的就是(round(x/5))然后因为我们除以5,所以我们也乘以5。
我通过给它一个基本参数使函数更通用,默认值为5。
Python 2
在Python 2中,需要使用float(x)来确保/执行浮点除法,并且需要最终转换为int,因为在Python 2中round()返回的是浮点值。
def myround(x, base=5):
return int(base * round(float(x)/base))
这只是一个比例的问题
>>> 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。
举个例子,16发到15发或者19发到15发
下面是使用的代码
def myround(x,segment):
preRound = x / segment
roundNum = int(preRound)
segVal = segment * roundNum
return segVal
的值加上0.5,可以“欺骗”int()使其舍入而不是舍入 传递给int()的数字。
我想还没有人写过这个,但你可以这样做:
round(12, -1) --> 10
round(18, -1) --> 20