Java中的Math.round()方法

Java中的Math.round()方法,java,rounding,Java,Rounding,Math.round(4816.5)返回4817 我只想在小数点大于5而不是大于等于5时进行四舍五入。在这里,我需要结果为4816 请给我解答。Math.round(n)基本上与(long)Math.floor(n+0.5)相同,因此您可以稍微修改该算法: long rounded = (long) Math.ceil(n - 0.5); Math.round(n)与(long)Math.floor(n+0.5)基本相同,因此您可以稍微修改该算法: long rounded = (long)

Math.round(4816.5)
返回4817

我只想在小数点大于5而不是大于等于5时进行四舍五入。在这里,我需要结果为4816

请给我解答。

Math.round(n)
基本上与
(long)Math.floor(n+0.5)
相同,因此您可以稍微修改该算法:

long rounded = (long) Math.ceil(n - 0.5);
Math.round(n)
(long)Math.floor(n+0.5)
基本相同,因此您可以稍微修改该算法:

long rounded = (long) Math.ceil(n - 0.5);
使用双负片:

-Math.round(-n)
使用双负片:

-Math.round(-n)

使用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);

使用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);

确保保留该类型。(将0.5更改为0.5f)确保保留该类型。(将0.5更改为0.5f)