while(potatosconeflour <= c1) {
potatosconeflour = potatosconeflour + potatosconeflour;
}
我使用了一个while循环,它在输入数字24后不起作用。我正在尝试将一个int数舍入到另一个int数。例如,我想将任意数字四舍五入为8的倍数。
例如:舍入1到8,13到16,23到24
答案 0 :(得分:5)
我将源数除以数字以使其四舍五入(注意:将其强制转换为double
,因此不要使用整数除法!)使用Math.ceil
向上舍入结果,然后将其乘以相同的数字:
public static int roundToMultiple(int toRound, int roundBy) {
return roundBy * (int) Math.ceil((double)toRound / roundBy);
}
答案 1 :(得分:3)
如果你想要舍入到最近的 8的倍数,那只是((i + 3) / 8) * 8
。 (如果它是8n + 4
,则向下舍入。如果你想从一半向上舍入,请使用i + 4
代替i + 3
。如果你想要围绕&#34;所有向上,&#34; 9
到16
,使用i + 7
。)
答案 2 :(得分:2)
使用模运算符(%
),它返回余数,然后将8
的余数减去你的数字。
public static void main(String[] args) {
int i = 13;
int rem = i % 8 > 0 ? i % 8 : 8;
i += 8 - rem;
System.out.println(i);
}
输出:16