有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中整数的数学“舍入”

我需要取一个long并将其值四舍五入到最近的10位。因此:

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

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


共 (3) 个答案

  1. # 1 楼答案

    使用模

    例如:

     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
    
  2. # 2 楼答案

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

  3. # 3 楼答案

    您可以通过乘法和除法运算来实现这一点。整数除法将根据需要进行取整:

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

    例如,如果输入为1024,则除法使中间值为102(因为实际值为102.4,被截断以长格式存储),乘法得到1020

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