Java使用BigDecimal保留double、float运算精度、保留指定位数有效数字、四舍五入-阿里云开发者社区

开发者社区> 啊啊啊88jdk> 正文

Java使用BigDecimal保留double、float运算精度、保留指定位数有效数字、四舍五入

简介: 工具类 package ……; import java.math.BigDecimal; /** * Created by kongqw on 2015/12/10.
+关注继续查看

工具类

package ……;

import java.math.BigDecimal;

/**
* Created by kongqw on 2015/12/10.
*/
public final class BigDecimalUtil {
  private BigDecimalUtil() {
  }

  /**
   * 加法运算
   *
   * @param d1 d1
   * @param d2 d2
   * @return
   */
  public static double add(double d1, double d2) {
      BigDecimal b1 = new BigDecimal(d1);
      BigDecimal b2 = new BigDecimal(d2);
      return b1.add(b2).doubleValue();
  }

  /**
   * 减法运算
   *
   * @param d1 d1
   * @param d2 d2
   * @return
   */
  public static double sub(double d1, double d2) {
      BigDecimal b1 = new BigDecimal(d1);
      BigDecimal b2 = new BigDecimal(d2);
      return b1.subtract(b2).doubleValue();
  }

  /**
   * 乘法运算
   *
   * @param d1 d1
   * @param d2 d2
   * @return
   */
  public static double mul(double d1, double d2) {
      BigDecimal b1 = new BigDecimal(d1);
      BigDecimal b2 = new BigDecimal(d2);
      return b1.multiply(b2).doubleValue();
  }

  /**
   * 除法运算
   *
   * @param d1  被除数
   * @param d2  除数
   * @param len 保留几位有效小数
   * @return
   */
  public static double div(double d1, double d2, int len) {
      BigDecimal b1 = new BigDecimal(d1);
      BigDecimal b2 = new BigDecimal(d2);
      // BigDecimal.ROUND_HALF_UP 舍入模式
      return b1.divide(b2, len, BigDecimal.ROUND_HALF_UP).doubleValue();
  }

  /**
   * 四舍五入操作
   *
   * @param d   要操作的数
   * @param len 保留几位有效数字
   * @return
   */
  public static double round(double d, int len) {
      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();
  }
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
shell使用lftp连接ftp和sftp,并可以指定私钥
lftp连接ftp在脚本中可以 lftp -c "open username:password@host:port; ls /Friso/20180822/click/mobile/SUCCESS | wc -l" lftp usename:password@host:port -e "ls /Fr...
2429 0
如何使用 Kubernetes 监测定位慢调用
本次课程主要分为三大部分,首先将介绍慢调用的危害以及常见的原因;其次介绍慢调用的分析方法以及最佳实践;最后将通过几个案例来去演示一下慢调用的分析过程。
3056 0
js之精确到指定位数的小数
将数字四舍五入到指定的小数位数。使用 Math.round() 和模板字面量将数字四舍五入为指定的小数位数。 省略第二个参数 decimals ,数字将被四舍五入到一个整数。
4896 0
206
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载