1. 程式人生 > 實用技巧 >java常用類:BigDecimal

java常用類:BigDecimal

BigDecimal

很多實際應用中需要精確運算,而double是近似值儲存,不符合要求,需要藉助BigDecimal用來對超過16位有效位的數進行精確的運算

  • 位於 java.math包裡

  • 作用:精確計算浮點數

  • 建立方式:BigDecimal bd=new BigDecimal("1.0");

  • BigDecimal一共有4個構造方法:

    String 構造方法是完全可預知的:寫入 newBigDecimal("0.1") 將建立一個 BigDecimal,它正好等於預期的 0.1

    通常建議優先使用String構造方法BigDecimal(String)

public class Demo01 {

    public static void main(String[] args) {
        BigDecimal bd1 = new BigDecimal("1.0");
        BigDecimal bd2 = new BigDecimal("0.9");
        //減法
        BigDecimal r1 = bd1.subtract(bd2);
        System.out.println(r1);
        //加法
        BigDecimal r2 = bd1.add(bd2);
        System.out.println(r2);
        //乘法
        BigDecimal r3 = bd1.multiply(bd2);
        System.out.println(r3);
        //除法
        BigDecimal r4 = new BigDecimal("1.4")
                .subtract(new BigDecimal("0.5"))
                .divide(new BigDecimal("0.9"));
        System.out.println(r4);

        //不能整除的情況,會報錯java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
        //public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
        // 第一引數表示除數, 第二個引數表示小數點後保留位數,第三個引數表示舍入模式
        //ROUND_HALF_UP 四捨五入
        System.out.println(new BigDecimal("10")
                .divide(new BigDecimal("3"), 2, BigDecimal.ROUND_HALF_UP));
    }
}
//結果
//0.1
//1.9
//0.90
//1
//3.33