BigDecimal(num).setScale ROUND_HALF_UP四舍五入的问题

当传入的值是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

猜你喜欢

转载自sky-xin.iteye.com/blog/2292283