将int数舍入到另一个int数

时间:2016-12-21 21:16:48

标签: java int rounding

while(potatosconeflour <= c1) {
    potatosconeflour = potatosconeflour + potatosconeflour;
}

我使用了一个while循环,它在输入数字24后不起作用。我正在尝试将一个int数舍入到另一个int数。例如,我想将任意数字四舍五入为8的倍数。

例如:舍入1到8,13到16,23到24

3 个答案:

答案 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; 916,使用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