是否有一个内置函数可以像下面这样舍入?
10 -> 10
12 -> 10
13 -> 15
14 -> 15
16 -> 15
18 -> 20
是否有一个内置函数可以像下面这样舍入?
10 -> 10
12 -> 10
13 -> 15
14 -> 15
16 -> 15
18 -> 20
当前回答
去掉“rest”会起作用:
rounded = int(val) - int(val) % 5
如果该值是一个整数:
rounded = val - val % 5
作为函数:
def roundint(value, base=5):
return int(value) - int(value) % int(base)
其他回答
的值加上0.5,可以“欺骗”int()使其舍入而不是舍入 传递给int()的数字。
round(x[, n]):数值四舍五入到10的负n次方的最接近倍数。所以如果n是负的…
def round5(x):
return int(round(x*2, -1)) / 2
由于10 = 5 * 2,您可以对2使用整数除法和乘法,而不是对5.0使用浮点除法和乘法。这并不重要,除非你喜欢位移位
def round5(x):
return int(round(x << 1, -1)) >> 1
这是我的C代码。如果我理解正确的话,应该是这样的;
#include <stdio.h>
int main(){
int number;
printf("Enter number: \n");
scanf("%d" , &number);
if(number%5 == 0)
printf("It is multiple of 5\n");
else{
while(number%5 != 0)
number++;
printf("%d\n",number);
}
}
这也是四舍五入到最接近5的倍数而不是四舍五入;
#include <stdio.h>
int main(){
int number;
printf("Enter number: \n");
scanf("%d" , &number);
if(number%5 == 0)
printf("It is multiple of 5\n");
else{
while(number%5 != 0)
if (number%5 < 3)
number--;
else
number++;
printf("nearest multiple of 5 is: %d\n",number);
}
}
对不起,我想对阿洛克辛格海的回答发表评论,但由于缺乏声誉,它不让我评论=/
总之,我们可以再归纳一步:
def myround(x, base=5):
return base * round(float(x) / base)
这允许我们使用非整数进制,如。25或任何其他分数进制。
舍入到非整数值,例如0.05:
def myround(x, prec=2, base=.05):
return round(base * round(float(x)/base),prec)
我发现这很有用,因为我只需要在代码中进行搜索和替换,就可以将“round(”更改为“myround(”,而不必更改参数值。