如何将Java中的任何整数舍入到下一个最高百位?

时间:2013-08-20 02:14:19

标签: java math integer rounding

为了说明,我想知道绕过以下整数的最佳方法是什么:

(整数) - > (舍入值)

9 - > 100

200 - > 200

201 - > 300

1367 - > 1400

......等等......有关使用Java实现这一目标的最佳方法的任何建议吗?

4 个答案:

答案 0 :(得分:2)

将模数确定为100

int k = 1234;
int mod = k % 100; //mod = 34
int difference = 100 - mod; //difference = 66
k += difference;

简单。

答案 1 :(得分:0)

int d = num % 100;
num = num+100-d

答案 2 :(得分:0)

public static int ceil100(int num) {
    return (num + 99) / 100 * 100;
}

当然,效率不高,但仍然如此。其他人发布的答案也有效:

public static int ceil100(int num) {
    return num + 100 - num % 100;
}

答案 3 :(得分:0)

使用Math#ceil()

int[] ints = {9, 200, 201, 1367, 90210};

int[] rounded = new int[5];
for (int i = 0; i < ints.length; i++) {
    rounded[i] = (int) (Math.ceil(ints[i]/100f) * 100f);
}

// prints: [100, 200, 300, 1400, 90300]
System.out.println(Arrays.toString(rounded));