在 Java 中对双打进行四舍五入
我找到了这个很好的舍入解决方案:
static Double round(Double d, int precise) {
BigDecimal bigDecimal = new BigDecimal(d);
bigDecimal = bigDecimal.setScale(precise, RoundingMode.HALF_UP);
return bigDecimal.doubleValue();
}
但是,结果令人困惑:
System.out.println(round(2.655d,2)); // -> 2.65
System.out.println(round(1.655d,2)); // -> 1.66
为什么它给出这个输出?我使用的是 jre 1.7.0_45。