将一个int编号四舍五入到另一个int号码


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

我使用了一段时间的循环,该循环在输入数字24后不起作用。例如,我想将任何数字舍入8个倍数。

例如:1至8、13至16、23至24

我会将源号除以将其舍入的数字(谨慎:将其施放到double,以便您不使用整数部门!),然后将其乘以相同的数字:

public static int roundToMultiple(int toRound, int roundBy) {
    return roundBy * (int) Math.ceil((double)toRound / roundBy);
}

如果要四舍五入到最近的倍数,那就是 ((i + 3) / 8) * 8。(如果是 8n + 4,则会下降。如果要从一半开始汇总,请使用 i + 4而不是 i + 3。如果要圆形"一路", 9 to 16 to CC_8,请使用 i + 7。)

使用返回其余部分的Modulo Operator(%),然后将其余的从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

最新更新