1. 程式人生 > >Java使用BigDecimal保留double、float運算精度、保留指定位數有效數字、四捨五入

Java使用BigDecimal保留double、float運算精度、保留指定位數有效數字、四捨五入

工具類

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(); } }