DecimalFormat模式

时间:2011-12-14 10:31:45

标签: java 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
  3. 但为什么在十进制之前有"0"而不是"#"?这零的目的究竟是什么? 谢谢您的帮助。

3 个答案:

答案 0 :(得分:18)

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 :(得分:4)

#只有在不是前导零的情况下才会输入数字。 0即使是尾随零,也会输入一个数字。如果你想要打印固定数量的数字,你也可以在前面使用零。

答案 2 :(得分:4)

在dp之前为零,0.23之类的小数字将显示为0.23。如果没有它,你将无法获得前导零,因此它只显示为.23。如果您有像excel这样的电子表格,也可以在那里查看。