zoukankan      html  css  js  c++  java
  • java数值运算后精度丢失问题

    最近连续俩次遇到运算后数值精度丢失问题,所以记录一下。

    问题1:java计算百分比,应该得到57,可返回的就是56

      在java代码中

            BigDecimal progress;
    
            BigDecimal a = new BigDecimal(POF);
            BigDecimal b = new BigDecimal(RF);
            if(b.compareTo(a)==1&&b.subtract(a).longValue()<1000000){
                return 100;
            }
            progress = a.divide(b,2,BigDecimal.ROUND_UP);
            return progress*100 ;         

    这段代码的计算都是用BigDecimal运算的,这没什么问题。可惜啊!return progress*100 ; 功亏一篑!

            BigDecimal progress;
    
            BigDecimal a = new BigDecimal(POF);
            BigDecimal b = new BigDecimal(RF);
            if(b.compareTo(a)==1&&b.subtract(a).longValue()<1000000){
                return 100;
            }
            progress = a.divide(b,2,BigDecimal.ROUND_UP);
            BigDecimal multiply = progress.multiply(new BigDecimal(100));
            return multiply.intValue();

    问题二:    在jsp页面中对金额计算,0.00元竟然还带个负号

     在java中测试

     

    double浮点型,计算结果确实不是0,而是一个近似0的负数。

    解决方案:

    (由于我后台返回的数据都是保留小数点后两位,所以对运算数字先升级运算,再对结果降级处理

    累计其他 :{{$itzUtils.thousands(((dczqt*100-dczdcz*100)/100).toFixed(2))}}元</span>
  • 相关阅读:
    axios baseURL
    TP5 nginx 配置
    Vue
    key
    curl openssl error
    vue use bulma
    《平凡的世界》
    《听听那冷雨》余光中
    心烦意乱
    祝你19岁生日快乐
  • 原文地址:https://www.cnblogs.com/caoyajun33-blog/p/8029299.html
Copyright © 2011-2022 走看看