亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【Java】BigDecimal實現加減乘除運算代碼

發布時間:2020-10-19 12:34:13 來源:腳本之家 閱讀:159 作者:olyx 欄目:編程語言

java.math.BigDecimal

BigDecimal一共有4個夠造方法,讓我先來看看其中的兩種用法:

第一種:BigDecimal(double val)

Translates a double into a BigDecimal.

第二種:BigDecimal(String val)

Translates the String repre sentation of a BigDecimal into a BigDecimal.

使用BigDecimal要用String來夠造,要做一個加法運算,需要先將兩個浮點數轉為String,然后夠造成BigDecimal,在其中一個上調用add方法,傳入另一個作為參數,然后把運算的結果(BigDecimal)再轉換為浮點數。

public static double add(double v1,double v2)
public static double sub(double v1,double v2)
public static double mul(double v1,double v2)
public static double div(double v1,double v2)
public static double div(double v1,double v2,int scale)
public static double round(double v,int scale)

工具類:Arith

/**
 * 由于Java的簡單類型不能夠精確的對浮點數進行運算,這個工具類提供精 確的浮點數運算,包括加減乘除和四舍五入。
 */
public class Arith { // 默認除法運算精度
  private static final int DEF_DIV_SCALE = 10; // 這個類不能實例化

  private Arith() {
  }

  /**
   * 提供精確的加法運算。
   * 
   * @param v1
   *      被加數
   * @param v2
   *      加數
   * @return 兩個參數的和
   */
  public static double add(double v1, double v2) {
    BigDecimal b1 = new BigDecimal(Double.toString(v1));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.add(b2).doubleValue();
  }

  /**
   * 提供精確的減法運算。
   * 
   * @param v1
   *      被減數
   * @param v2
   *      減數
   * @return 兩個參數的差
   */
  public static double sub(double v1, double v2) {
    BigDecimal b1 = new BigDecimal(Double.toString(v1));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.subtract(b2).doubleValue();
  }

  /**
   * 提供精確的乘法運算。
   * 
   * @param v1
   *      被乘數
   * @param v2
   *      乘數
   * @return 兩個參數的積
   */
  public static double mul(double v1, double v2) {
    BigDecimal b1 = new BigDecimal(Double.toString(v1));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.multiply(b2).doubleValue();
  }

  /**
   * 提供(相對)精確的除法運算,當發生除不盡的情況時,精確到 小數點以后10位,以后的數字四舍五入。
   * 
   * @param v1
   *      被除數
   * @param v2
   *      除數
   * @return 兩個參數的商
   */
  public static double div(double v1, double v2) {
    return div(v1, v2, DEF_DIV_SCALE);
  }

  /**
   * 提供(相對)精確的除法運算。當發生除不盡的情況時,由scale參數指 定精度,以后的數字四舍五入。
   * 
   * @param v1
   *      被除數
   * @param v2
   *      除數
   * @param scale
   *      表示表示需要精確到小數點以后幾位。
   * @return 兩個參數的商
   */
  public static double div(double v1, double v2, int scale) {
    if (scale < 0) {
      throw new IllegalArgumentException(
          "The scale must be a positive integer or zero");
    }
    BigDecimal b1 = new BigDecimal(Double.toString(v1));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
  }

  /**
   * 提供精確的小數位四舍五入處理。
   * 
   * @param v 需要四舍五入的數字
   * @param scale 小數點后保留幾位
   * @return 四舍五入后的結果
   */
  public static double round(double v, int scale) {
    if (scale < 0) {
      throw new IllegalArgumentException(
          "The scale must be a positive integer or zero");
    }
    BigDecimal b = new BigDecimal(Double.toString(v));
    BigDecimal one = new BigDecimal("1");
    return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
  }
};

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肇州县| 商河县| 三明市| 柳河县| 洛宁县| 屏南县| 马山县| 双牌县| 鲁山县| 永泰县| 桂平市| 汕头市| 东港市| 太原市| 长顺县| 祁连县| 佳木斯市| 方正县| 同江市| 大厂| 珲春市| 高青县| 新营市| 峨边| 柞水县| 洪洞县| 凤凰县| 苍溪县| 清原| 聂荣县| 江山市| 宝坻区| 汉阴县| 福贡县| 兴义市| 东乌| 措美县| 凤凰县| 大余县| 扎兰屯市| 松江区|