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

来源:互联网 发布:长野原美绪 知乎 编辑:程序博客网 时间:2024/05/01 08:41

工具类

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();  }}
0 0
原创粉丝点击