java实现四舍五入并且保留两位小数

一.

public static void main(String[] args) {
        String d1 = "2.2";
        String d2 = "2.260";
        String d3 = "2.207";
        String d4 = "2.996";
        
        DecimalFormat df = new DecimalFormat("0.00");
        
        System.out.println(df.format(Double.parseDouble(d1)));
        System.out.println(df.format(Double.parseDouble(d2)));
        System.out.println(df.format(Double.parseDouble(d3)));
        System.out.println(df.format(Double.parseDouble(d4)));
        
    }

结果如下:

2.20
2.26
2.21
3.00

二.

public static void main(String[] args) {
        double d1 = 2.254;
        double d2 = 2.255;
        double d3 = 2.256;
        double d4 = 2.257;
        BigDecimal bd1= new BigDecimal(d1);
        BigDecimal bd2= new BigDecimal(d2);
        BigDecimal bd3= new BigDecimal(d3);
        BigDecimal bd4= new BigDecimal(d4);
        
        System.out.println(bd1.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
        System.out.println(bd2.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
        System.out.println(bd3.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
        System.out.println(bd4.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
        
        
    }

结果如下:

2.25
2.25
2.26
2.26

原因:因为数值本身就是double类型,而double类型的2.255可能存值为2.2549999999999999999999这种,所以这种四舍五入方法可能会出现问题。

三.

public static void main(String[] args) {
        double d1 = 0.20;
        double d2 = 0.250;
        double d3 = 0.299;
        double d4 = 0.999;
        
        System.out.println(String.format("%.2f", d1));
        System.out.println(String.format("%.2f", d2));
        System.out.println(String.format("%.2f", d3));
        System.out.println(String.format("%.2f", d4));
        
        
    }

结果如下:

0.20
0.25
0.30
1.00

四.


你可能感兴趣的:(JavaEE开发)