美文网首页
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乘法精度问题

    大家想必都遇到过Bigcimal做乘法精度丢失的问题,如下: BigDecimal a = new BigDeci...

  • 高精度(加法&乘法&减法)

    高精度加法: 高精度乘法: 高精度减法:

  • 17-12-8版子

    高精度加法 高精度乘法 快速乘法 二分匹配 阶乘长度(Stirling公式) 并查集 树状数组 树状数组的逆序数 ...

  • 2018-11-04-1

    java double计算精度问题 double计算防止精度丢失:方案:将double转成bigDecimalSy...

  • bcmul 精度计算,一般用于价格计算

    bcmul — 2个任意精度数字乘法计算

  • 高精度乘法

    【例】高精度乘法。输入两个正整数,求它们的积。【算法分析】类似加法,可以用竖式求乘法。在做乘法运算时,同样也有进位...

  • 高精度乘法

    问题 适用于1000位以内数的乘法 思路 注意两点: 数字是通过字符串传过来的,字符串的低位反而是数字的高位,所以...

  • 常用数学函数

    bcadd 任意精度数的相加 bcsub 任意精度数的减法 bcmul 乘法, bcdiv除法 bcmod 取余数...

  • 高精度数(大整数)乘法

    大整数乘法 上一期(高精度加法)今天我们来研讨一下高精度乘法。 题目描述:将两个大整数(最多100位)相乘,输出结...

  • 2021-01-17

    当题目中出现除法时,可以考虑用乘法进行替代,减少因为doule值而产生的精度误差。Java中方法的重载:不比较放回...

网友评论

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

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