在Java中“舍入”整数

时间:2014-09-11 15:45:29

标签: java math rounding

我需要取一个long并将其值向下舍入到最近的10s位置。因此:

If the # is:            Then it should become:
==============================================
243                     240
288485                  288480
6                       0
107                     100
1009                    1000
1019                    1010

我知道RoundingMode 可能可能在这里帮助我,但我能够找到的所有示例都使用小数,而不是整数。有什么想法吗?

3 个答案:

答案 0 :(得分:4)

使用模数

示例:

 int i= 243;
 System.out.println(i-(i%10));

其他方式:(取自重复的问题)

 int i = 243;
 MathUtils.round((double) i, -1); // nearest ten, 240.0
 MathUtils.round((double) i, -2); // nearest hundred, 200.0
 MathUtils.round((double) i, -3); // nearest thousand, 2000.0

答案 1 :(得分:2)

您可以使用乘法和除法运算来完成此操作。整数divsion将根据需要向下舍入:

long roundDownToTen(long input){
    long intermediate = input/10;
    return input*10;
}

例如,如果输入为1024,则除法使得中间值为102(因为实际值为102.4,被截断以存储在long中),乘法给出1020。

您也可以使用一种方法来减去单位数字(模数)的值,这在Aeshang的答案中是建议的。

答案 2 :(得分:0)

除以10(243/10 = 24.3)将其放入int中,乘以10.(24 * 10 = 240) 对所有值执行此操作,您应该具有正确的值