美文网首页
java乘法精度问题

java乘法精度问题

作者: 手并夕夕夕夕 | 来源:发表于2018-12-25 17:54 被阅读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));

    相关文章

      网友评论

          本文标题:java乘法精度问题

          本文链接:https://www.haomeiwen.com/subject/ijzflqtx.html