BigDecimal小談

        BigDecimal,用來對超過16位有效位的數進行精確的運算。雙精度浮點型變量double可以處理16位有效數。

  而在實際應用中,需要對更大或者更小的數進行運算和處理。float和double只能用來做科學計算或者是工程計算,在商業計算中要用java.math.BigDecimal。

import java.math.BigDecimal;
public class T {
    public static void main(String[] args) {
        String a = "9999.9999";
        int b = 9999;
        double c = 9999.9999;
        char d = 99;
        System.out.println("===================");
        // 不同類型轉爲BigDecimal
        BigDecimal ma = new BigDecimal(a);
        BigDecimal mb = new BigDecimal(b);
        BigDecimal mc = new BigDecimal(c);
        BigDecimal md = new BigDecimal(d);
        System.out.println("ma:"+ma.toString());
        System.out.println("mb:"+mb.toString());
        System.out.println("mc:"+mc.toString());
        System.out.println("md:"+md.toString());
        System.out.println("===================");
        // 
        BigDecimal add = ma.add(mb);
        System.out.println("加法:"+add);
        // 
        BigDecimal sub = ma.subtract(mb);
        System.out.println("減法:"+sub);
        // 
        BigDecimal mul = mb.multiply(md);
        System.out.println("乘法:"+mul);
        // 
        BigDecimal div = mb.divide(md);
        System.out.println("除法:"+div);
        System.out.println("===================");
        mc = mc.setScale(2, BigDecimal.ROUND_HALF_UP);
        System.out.println("四捨五入:"+mc);
        System.out.println("===================");
        mc = mc.negate();
        System.out.println("負數:"+mc);
        System.out.println("===================");
    }
}
        BigDecimal小結
        在需要精確的小數計算時再使用BigDecimal,BigDecimal的性能比double和float差,在處理龐大,複雜的運算時尤爲明顯。故一般精度的計算沒必要使用BigDecimal。
        儘量使用參數類型爲String的構造函數。
        BigDecimal都是不可變的(immutable)的, 在進行每一次四則運算時,都會產生一個新的對象 ,所以在做加減乘除運算時要記得要保存操作後的值。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章