91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

【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

进贤县| 香港| 栖霞市| 太保市| 梧州市| 内江市| 黔东| 岐山县| 定结县| 雷山县| 南宁市| 巴彦淖尔市| 花莲县| 江西省| 玉屏| 寿宁县| 陇西县| 平湖市| 子长县| 万州区| 宜君县| 灵丘县| 连州市| 民丰县| 榆树市| 枣庄市| 饶平县| 大姚县| 观塘区| 吉木萨尔县| 江源县| 汪清县| 鞍山市| 西畴县| 青河县| 改则县| 廉江市| 南宫市| 萨嘎县| 阿拉善右旗| 靖安县|