天天看點

Java——>>DecimalFormat類的一些坑點

DecimalFormat處理1.24385,取四位小數的時候,得出的結果是1.2438,搜了下,DecimalFormat預設的是4舍,6入,5則奇入偶舍。

改了舍入方式,發現問題還是存在,在stackoverflow上發現是資料精度問題,由string轉成bigdecimal再轉換則沒問題了,先記錄下,後續有空再看看源碼。

public static void test2() {
        System.out.println("");
        double a = 1.24385;
        //将待處理的資料建構成BigDecimal類型的對象,該構造方法需要一個String類型的參數
        System.out.println("原數:" + new BigDecimal(String.valueOf(a).toString()));
//        String.valueOf()  方法,将基本類型轉換為String類型
        DecimalFormat df = new DecimalFormat("#.####");
        df.setRoundingMode(RoundingMode.HALF_UP);   //改為四舍五入模式
        System.out.println("不使用BigDecimal提高精度:" + df.format(a));
        System.out.println("轉換為BigDecimal後:" + df.format(new BigDecimal(String.valueOf(a))));
    }      
Java——>>DecimalFormat類的一些坑點