如题,格式化时保留小数点后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