DecimalFormat模式


问题内容
public static String formatAmountUpToTwoDecimalNumber(String amount)
    {       
        if(amount==null || "".equals(amount))
        {
             return "";
        }  
        Double doubleAmount = Double.valueOf(amount);
        double myAmount = doubleAmount.doubleValue();
        NumberFormat f = new DecimalFormat("###,###,###,###,##0.00");
        String s = f.format(myAmount);
        return s;
    }

"###,###,###,###,##0.00",此模式的目的是什么?我相信这有两个目的

  1. 分组数字,即千位分隔符
  2. 如果缺少小数点,则在小数点后附加两个零,将23转换为23.00

但是为什么在小数点之前"0"而不是"#"小数点之前呢?这个零的目的是什么?谢谢您的帮助。


问题答案:
Symbol  Location    Localized?  Meaning
0       Number      Yes         Digit
#       Number      Yes         Digit, zero shows as absent

来自:http
:
//docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html

所以#当没有数量未显示。前导0表示小数点分隔符前至少应有1位数字。