当传入的值是String类型时,四舍五入是正确的,当传入的是double类型的时候,四舍五入是有问题;
尽量使用String作为传入值,保证计算的准确性。
下面是例子:
@Test public void test() throws Exception { double num = 176.5555; System.out.println((new BigDecimal(num).setScale(3,BigDecimal.ROUND_HALF_UP))); } 结果是:176.555
@Test public void test() throws Exception { String num = "176.5555"; System.out.println((new BigDecimal(num).setScale(3,BigDecimal.ROUND_HALF_UP))); } 结果是:176.556