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();
  }
}
相关文章
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
448 0
|
测试技术
【日常记录】——对BigDecimal除法运算时遇到的Bug
【日常记录】——对BigDecimal除法运算时遇到的Bug
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
1055 5
【Java】Math、System、RunTime、BigDecimal类常用方法
【Java】Math、System、RunTime、BigDecimal类常用方法
181 0
|
存储 关系型数据库 MySQL
double ,FLOAT还是double(m,n)--深入解析MySQL数据库中双精度浮点数的使用
本文探讨了在MySQL中使用`float`和`double`时指定精度和刻度的影响。对于`float`,指定精度会影响存储大小:0-23位使用4字节单精度存储,24-53位使用8字节双精度存储。而对于`double`,指定精度和刻度对存储空间没有影响,但可以限制数值的输入范围,提高数据的规范性和业务意义。从性能角度看,`float`和`double`的区别不大,但在存储空间和数据输入方面,指定精度和刻度有助于优化和约束。
2007 5
|
Java
Java中将保留四位小数的Double转换为String的方法详解
选择合适的方法,可以使代码更加简洁、高效,同时也能满足不同场景下的需求。
665 5
深入了解Java中的BigDecimal类及其方法
深入了解Java中的BigDecimal类及其方法
383 1
|
安全 Java
java中BigDecimal详解
java中BigDecimal详解
|
JavaScript Java
Java long传到前台精度损失解决方案
Java long传到前台精度损失解决方案
215 1
|
存储 C语言
计算 int, float, double 和 char 字节大小
计算 int, float, double 和 char 字节大小。
316 3