Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,总是将其四舍五入到十_Java - Fatal编程技术网

在Java中,总是将其四舍五入到十

在Java中,总是将其四舍五入到十,java,Java,我还没有找到任何答案。但我想把任何数字凑成十个。像这样: 32 -> 40 25 -> 30 88 -> 90 但有了下面的代码,我就四舍五入了。我怎么能总是四舍五入,而不是十舍五入呢 Math.round(number / 10.0) * 10; 舍入可以向上舍入,也可以向下舍入,具体取决于余数。相反,您应该使用: 舍入可以向上舍入,也可以向下舍入,具体取决于余数。相反,您应该使用: 从数学上讲,您需要一个值加上余数10的差值。您可以得到具有%模数的余数。像 int[]

我还没有找到任何答案。但我想把任何数字凑成十个。像这样:

32 -> 40
25 -> 30
88 -> 90
但有了下面的代码,我就四舍五入了。我怎么能总是四舍五入,而不是十舍五入呢

Math.round(number / 10.0) * 10;
舍入可以向上舍入,也可以向下舍入,具体取决于余数。相反,您应该使用:

舍入可以向上舍入,也可以向下舍入,具体取决于余数。相反,您应该使用:


从数学上讲,您需要一个值加上余数10的差值。您可以得到具有%模数的余数。像

int[] arr = { 32, 25, 88 };
for (int v : arr) {
    System.out.printf("%d -> %d%n", v, v + (10 - (v % 10)));
}
按要求的产出

32 -> 40
25 -> 30
88 -> 90
你说你总是把他们聚在一起。如果90应该保持为90,则测试零的余数。像

for (int v : arr) {
    int r = v % 10;
    if (r != 0) {
        System.out.printf("%d -> %d%n", v, v + 10 - r);
    } else {
        System.out.printf("%d -> %d%n", v, v);
    }
}

从数学上讲,您需要一个值加上余数10的差值。您可以得到具有%模数的余数。像

int[] arr = { 32, 25, 88 };
for (int v : arr) {
    System.out.printf("%d -> %d%n", v, v + (10 - (v % 10)));
}
按要求的产出

32 -> 40
25 -> 30
88 -> 90
你说你总是把他们聚在一起。如果90应该保持为90,则测试零的余数。像

for (int v : arr) {
    int r = v % 10;
    if (r != 0) {
        System.out.printf("%d -> %d%n", v, v + 10 - r);
    } else {
        System.out.printf("%d -> %d%n", v, v);
    }
}

您可以仅使用Java整数算术来完成此操作:

x % 10 == 0 ? x : ((x / 10)  + 1) * 10
因此:

将打印:

50

您可以仅使用Java整数算术来完成此操作:

x % 10 == 0 ? x : ((x / 10)  + 1) * 10
因此:

将打印:

50
关于如何处理负数,请参见我的另一个问题

要将整数除法向下舍入到最接近的10的倍数,只需将整数除法除以10再乘以10即可,因为整数除法总是向下舍入到零

roundDown = value / 10 * 10;
若要向上取整,请在向下取整之前添加9

roundUp = (value + 9) / 10 * 10;
roundHalfUp = (value + 5) / 10 * 10;
要向上舍入一半,请在向下舍入之前加5

roundUp = (value + 9) / 10 * 10;
roundHalfUp = (value + 5) / 10 * 10;
试验

输出

上下对半 32 30 40 30 25 20 30 30 88 80 90 90 50 50 50 50 关于如何处理负数,请参见我的另一个问题

要将整数除法向下舍入到最接近的10的倍数,只需将整数除法除以10再乘以10即可,因为整数除法总是向下舍入到零

roundDown = value / 10 * 10;
若要向上取整,请在向下取整之前添加9

roundUp = (value + 9) / 10 * 10;
roundHalfUp = (value + 5) / 10 * 10;
要向上舍入一半,请在向下舍入之前加5

roundUp = (value + 9) / 10 * 10;
roundHalfUp = (value + 5) / 10 * 10;
试验

输出

上下对半 32 30 40 30 25 20 30 30 88 80 90 90 50 50 50 50
错误:90->100@Andreas很公平。但欧普说他总是凑在一起。添加了附录。错误:90->100@Andreas很公平。但欧普说他总是凑在一起。增加了一个增编。