Java 格式化之DecimalFormat

如题,格式化时保留小数点后2位是0省略,此类需求可以使用 java.text.DecimalFormat

初始化 DecimalFormat 时传 pattern ,根据 pattern 来格式化,

DecimalFormat df1 = new DecimalFormat(yourPatter);
String result =  df1.format(yourString);

常用的 pattern 有这些。

“0.00”

用于 保留小数点后2位,缺位补全 的场景。

  • 保留小数点后两位,不足两位补 0 ;
  • 是两位就保持两位;
  • 超过两位,显示为两位,根据第三位四舍五入。
DecimalFormat df1 = new DecimalFormat("0.00");

System.out.println("df1.format(11):" + df1.format(11));
System.out.println("df1.format(11.1):" + df1.format(11.1));
System.out.println("df1.format(11.11):" + df1.format(11.11));
System.out.println("df1.format(11.119):" + df1.format(11.119));
System.out.println("df1.format(11.1149):" + df1.format(11.1149));
System.out.println("df1.format(11.1191):" + df1.format(11.1191));

结果,

df1.format(11):11.00
df1.format(11.1):11.10
df1.format(11.11):11.11
df1.format(11.119):11.12
df1.format(11.1149):11.11
df1.format(11.1191):11.12

“0.##”

用于 保留小数点后2位,是0省略 的场景。

  • 没有小数点就正常显示;
  • 小数点后有两位,如果最后一位是 0 则省略 ;
  • 小数点后有两位,如果两位都是是 0 则都省略 ;
  • 小数点后超过两位,显示为两位,根据第三位四舍五入;

示例,

        DecimalFormat df2 = new DecimalFormat("0.##");
        System.out.println("df2.format(47):" + df2.format(47));
        System.out.println("df2.format(47.3):" + df2.format(47.3));
        System.out.println("df2.format(47.30):" + df2.format(47.30));
        System.out.println("df2.format(47.98):" + df2.format(47.98));
        System.out.println("df2.format(47.118):" + df2.format(47.118));
        System.out.println("df2.format(47.1119):" + df2.format(47.1119));

运行结果,

df2.format(47):47
df2.format(47.3):47.3
df2.format(47.30):47.3
df2.format(47.98):47.98
df2.format(47.118):47.12
df2.format(47.1119):47.11

“,###”

每3位用 ,分开。

DecimalFormat df3 = new DecimalFormat(",###");
System.out.println("df3.format(123456789):" + df3.format(123456789));

结果

df3.format(123456789):123,456,789

你可能感兴趣的:(Java,格式化,java,DecimalFormat)