java乘法精度问题

2018-12-25  本文已影响0人  手并夕夕夕夕

大家想必都遇到过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));

上一篇 下一篇

猜你喜欢

热点阅读