java乘法精度问题

大家想必都遇到过Bigcimal做乘法精度丢失的问题,如下:

        BigDecimal a = new BigDecimal(3.5);

        BigDecimal a1 = new BigDecimal(295.210);

        System.out.println(a.multiply(a1).setScale(2, BigDecimal.ROUND_HALF_UP));

以上程序运行结果为:1033.23

计算器计算结果为:1033.235 四舍五入为:1033.24

造成以上的问题是因为float和double是不精确的运算,并不是因为BigDecimal的问题

不信的话可以执行以下代码:System.out.println(0.1*3);

问题找到了解决办法如下:

        BigDecimal a = new BigDecimal(“3.5”);

        BigDecimal a1 = new BigDecimal(“295.210”);

        System.out.println(a.multiply(a1).setScale(2, BigDecimal.ROUND_HALF_UP));

你可能感兴趣的:(java乘法精度问题)