Java中的Math.round()方法

use*_*475 1 java rounding

Math.round(4816.5) 正在返回4817.

我想只在小数> 5而不是> = 5时才向上舍入.所以在这里,我需要结果为4816.

请给我解决方案.

Dea*_*ing 6

Math.round(n)基本上是相同的,(long) Math.floor(n + 0.5)你可以稍微修改一下这个算法:

long rounded = (long) Math.ceil(n - 0.5);
Run Code Online (Sandbox Code Playgroud)


soc*_*pet 5

使用双阴性:

-Math.round(-n)
Run Code Online (Sandbox Code Playgroud)


dog*_*ane 5

使用HALF_DOWN的RoundingMode 并让Java处理剩下的事情:

        BigDecimal value = new BigDecimal(4816.5);
        value = value.setScale(0, RoundingMode.HALF_DOWN);
        long result = value.longValue();
        System.out.println(result);
Run Code Online (Sandbox Code Playgroud)