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();
  }
}
相关文章
|
9月前
|
存储 Java
百度搜索:蓝易云【Java语言之float、double内存存储方式】
由于使用IEEE 754标准进行存储,float和double类型可以表示非常大或非常小的浮点数,并且具有一定的精度。然而,由于浮点数的特性,它们在进行精确计算时可能会存在舍入误差。在编写Java程序时,需要注意使
109 0
java判断小数点后是否为0,是的话则取整,不是的话则保留
java判断小数点后是否为0,是的话则取整,不是的话则保留
405 0
|
3月前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
204 5
|
7月前
|
Java
Java中将保留四位小数的Double转换为String的方法详解
选择合适的方法,可以使代码更加简洁、高效,同时也能满足不同场景下的需求。
160 5
|
8月前
|
Java
一篇文章讲明白Java中四舍五入
一篇文章讲明白Java中四舍五入
122 0
|
8月前
|
Java
Java的double值保留2位小数
【6月更文挑战第16天】Java的double值保留2位小数
277 0
|
9月前
|
SQL Java 数据库连接
Mybatis的批量插入Bigdecimal会丢失精度
Mybatis的批量插入Bigdecimal会丢失精度
556 0
|
9月前
|
Java 定位技术
在Java中为什么不推荐使用Float
在Java中为什么不推荐使用Float
113 1
|
9月前
|
Java
Java PDF 相关 1、拷贝多个PDF到一个PDF,并且文件大小变小,文本等信息保留
1、合并多个PDF,并且文件变小,后面添加的文本信息保留
177 0
Java对double值进行四舍五入,保留两位小数的几种方法
Java对double值进行四舍五入,保留两位小数的几种方法
173 1

热门文章

最新文章