Math.round(4816.5)
正在返回4817。
我想在小数为> 5而不是> = 5时才向上舍入。所以在这里,我需要结果为4816。
请给我解决方案。
答案 0 :(得分:6)
Math.round(n)
与(long) Math.floor(n + 0.5)
基本相同,因此您可以稍微修改该算法:
long rounded = (long) Math.ceil(n - 0.5);
答案 1 :(得分:5)
使用双重否定:
-Math.round(-n)
答案 2 :(得分: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);