请记住,我只想将DOWN舍入到最接近的20的倍数,从不向上。
非常感谢!
答案 0 :(得分:8)
public static Integer round20(Integer b){
return b - (b%20);
}
答案 1 :(得分:7)
一种解决方案是从初始值中减去模20的结果(这是除以20的余数)。像,
double[] in = { 22, 45, 69.5, 60 };
for (double d : in) {
int v = (int) d;
v -= v % 20;
System.out.printf("%.1f --> %d%n", d, v);
}
输出
22.0 --> 20
45.0 --> 40
69.5 --> 60
60.0 --> 60
答案 2 :(得分:4)
你可以除以20,舍入(Math.floor)然后乘以20。
答案 3 :(得分:1)
您正在寻找模运算。来自Wikipedia:
在计算中,模运算找到除法的余数 一个数字与另一个数字(有时称为模数)。
所以你可以写:
int unrounded = 66;
int rounded = unrounded - (unrounded % 20);
作为一种方法:
public static int moduloFloor(int toRound, int modulo) {
return toRound - (toRound % modulo);
}
答案 4 :(得分:0)
您想知道提供的号码有多少20个。假设x
是您的输入,请尝试:
Math.floor(x / 20) * 20