宇筱博客

  • 解决办法
  • 学无止境
  • 记录时光
  • 百宝箱
宇筱博客
点滴记忆,汇聚成海。
  1. 首页
  2. 解决办法
  3. 正文

解决double类型相减有误差的问题

2018年1月6日 616点热度 0人点赞 0条评论

    //两个Double数相加

public static Double add(Double v1,Double v2){

  BigDecimal b1 = new BigDecimal(v1.toString());

  BigDecimal b2 = new BigDecimal(v2.toString());

  return b1.add(b2).doubleValue();

  }

//两个Double数相减

public static Double sub(Double v1,Double v2){

  BigDecimal b1 = new BigDecimal(v1.toString());

  BigDecimal b2 = new BigDecimal(v2.toString());

  return b1.subtract(b2).doubleValue();

  }

// 两个Double数相乘

public static Double mul(Double v1,Double v2){

  BigDecimal b1 = new BigDecimal(v1.toString());

  BigDecimal b2 = new BigDecimal(v2.toString());

  return b1.multiply(b2).doubleValue();

  }

//两个Double数相除

public static Double div(Double v1,Double v2){

  BigDecimal b1 = new BigDecimal(v1.toString());

  BigDecimal b2 = new BigDecimal(v2.toString());

  return b1.divide(b2,DEF_DIV_SCALE,BigDecimal.ROUND_HALF_UP).doubleValue();

  }

//两个Double数相除,并保留scale位小数

public static Double div(Double v1,Double v2,int scale){

  if(scale<0){

  throw new IllegalArgumentException(

  "The scale must be a positive integer or zero");

  }

  BigDecimal b1 = new BigDecimal(v1.toString());

  BigDecimal b2 = new BigDecimal(v2.toString());

  return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

  }

 //进行四舍五入

   

BigDecimal b1 = new BigDecimal(d);

      BigDecimal b2 = new BigDecimal(1);

       // 任何一个数字除以1都是原数字

       // ROUND_HALF_UP是BigDecimal的一个常量,

表示进行四舍五入的操作

       return b1.divide(b2, len,BigDecimal.

ROUND_HALF_UP).doubleValue();

  }

更多关于BigDecimal的用法详见:http://www.apihome.cn/api/java/BigDecimal.html

原文链接:https://blog.csdn.net/mlgglm/article/details/48241865

标签: 暂无
最后更新:2018年1月6日

小渔民

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2025 宇筱博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备15017825号-2