【Java】Java中BigDecimal的基本運算

來源:互聯網
上載者:User

標籤:scale   exce   數字   比較   使用   throw   col   bsp   需要   

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)

基本使用:

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

 

【Java】Java中BigDecimal的基本運算

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.