歡迎使用CSDN-markdown編輯器

java數據處理

在編寫代碼時總是會出現這樣的情況:2.0-1.1=0.8999999999999999。出現這種情況是因爲計算機轉換成二進制時出現的。

public class Test {
    @org.junit.Test
    public void fun1() {
        double a1 = 2.0;
        double a2 = 1.1;
        double a3 = a1 - a2;
        System.out.println(a3);
    }
}
怎麼來解決這種情況呢,平時我用保留小數來解決這種情況。DecimalFormat format = new DecimalFormat("#.##");具體代碼實現:
public class Test {
    @org.junit.Test
    public void fun1() {
        DecimalFormat format = new DecimalFormat("#.##");
        double a1 = 2.0;
        double a2 = 1.1;
        double a3 = a1 - a2;
        System.out.println(format.format(a3));
    }
}
這樣輸出結果便是0.9,但是不好的一點就是,保留多少位小數,得自己預算。今天學習的時候瞭解到一個類:BigDecimal,便很好的解決了這種問題。具體代碼實現:
public void fun2(){
    BigDecimal d1 = new BigDecimal("2.0");
    BigDecimal d2 = BigDecimal.valueOf(1.1);
    double d3 = d1.subtract(d2).doubleValue();
    System.out.println(d3);;
}

除此之外,BigDecimal,還可以處理大數據,比如100!。

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