BigDecimalUtils-解决Double精度问题

BigDecimal可以解决Double精度问题:
比如:Double result=(int)Math.floor(70.0)*0.01;//打印结果是:0.7000000000000001 ,而正确的结果是:0.7
解决办法:底层用java.math.BigDecimal计算,返回类型用double类型
注解: 在《Effective  Java 》中提到一个原则,那就是float和double只能用来作科学计算或者是工程计算,但在商业计算中我们要用java.math.BigDecimal,通过使用BigDecimal类我们可以解决上述问题
解决之后的代码:
/**
    * 功能:日均超过六小时行驶次数,计算公式: floor(over_6h_driving/ statdays *100)*0.01
       * @Title : getOver6hcntPerday
       * @Description : 日均超过六小时行驶次数
       * @param @param v1
       * @param @param v2
       * @param @param dr
       * @param @return     参数
       * @return int     返回类型
       *
    */
   public static Double getOver6hcntPerday(Object v1 ,Object v2 , double dr ){
      Double d1 = null ;
      Double d2 = null ;
      if ( v1 != null && v2 != null ){
        d1 =Double. valueOf ( v1 .toString());
        d2 =Double. valueOf ( v2 .toString());
      }
      Double tmp =ArithUtil. mul (ArithUtil. div ( d1 , d2 ), 100) ;
      ......
阅读全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值