DecimalFormat 转换数字调整精度 【vaynexiao】

  1. 以“0”补位时:

如果数字少了,就会补“0”,小数和整数都会补;

如果数字多了,就切掉,但只切小数的末尾,整数不能切;

同时被切掉的小数位会进行四舍五入处理。

  1. 以“#”补位时:

如果数字少了,则不处理,不会补“0”,也不会补“#”;

如果数字多了,就切掉,但只切小数的末尾,整数不能切;

同时被切掉的小数位会进行四舍五入处理。

public class TestNum {
     
    public static String decimalFormat(float value) {
     
        DecimalFormat decimalFormat = new DecimalFormat();
        decimalFormat.applyPattern("0.0000");
        return decimalFormat.format(value);
    }

    public static String decimalFormat(double value) {
     
        DecimalFormat decimalFormat = new DecimalFormat("0.000000000000000");
        return decimalFormat.format(value);
    }
    public static String decimalFormat(String value) {
     
        if (value == null || value.isEmpty()){
      return "0.00"; }

        double d = Double.parseDouble(value);
        DecimalFormat decimalFormat = new DecimalFormat();
        decimalFormat.applyPattern("0.##");
        return decimalFormat.format(d);
    }
    public static void main(String[] args) {
     
        System.out.println(decimalFormat(2.234234f));//转换float
        System.out.println(decimalFormat(2.234234));//转换double
        System.out.println(decimalFormat("2.234234"));//转换String
        System.out.println(decimalFormat("2.234234f"));//转换String 其实是float f
        System.out.println(decimalFormat("2.234234F"));//转换String 其实是float F
        System.out.println(decimalFormat("2.234234nba"));//转换String 非法数字
    }
}

上面提到的四舍五入,严格来说要比5大一点点才会进1,等于5是不会进的(0.##)

        System.out.println(decimalFormat("2.54500000000000001"));//2.54
        System.out.println(decimalFormat("2.5450000000000001"));//2.54
        System.out.println(decimalFormat("2.545000000000001"));//2.55
        System.out.println(decimalFormat("2.54500000000001"));//2.55
        System.out.println(decimalFormat("2.5450000000001"));//2.55

你可能感兴趣的:(API)