天天看点

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类的一些坑点