如何在DecimalFormat中格式化空值



我使用DecimalFormat来表示带有2位小数的百分比:

DecimalFormat fmt = new DecimalFormat("0.00%");
System.out.println(fmt.format(1.14));   // 114.00%
System.out.println(fmt.format(0.1201)); // 12.01%
System.out.println(fmt.format(null));   // I would like to show "--"

如何为null指定格式?我需要两个破折号

您需要定义一个自定义格式化器,但是由于方法DecimalFormat.format是final的,因此您不能继承该类并重写方法

DashDecimalFormat fmt = new DashDecimalFormat("0.00%");
System.out.println(fmt.format(1.14));   // 114.00%
System.out.println(fmt.format(0.1201)); // 12.01%
System.out.println(fmt.format(null));   // --
class DashDecimalFormat {
private final DecimalFormat formatter;
public DashDecimalFormat(String pattern) {
formatter = new DecimalFormat(pattern);
}
public String format(Object obj) {
return obj == null ? "--" : formatter.format(obj);
}
}

最新更新