2011-12-14 68 views
9
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",这种模式的目的究竟是什么?我相信它有两个目的DecimalFormat模式

  1. 到组号码,也就是把千个为分隔符逗号
  2. 小数点后两个零追加如果小数却丢失了转化23〜23.00

但为什么会出现是十进制前的"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表示在小数点分隔符前至少有一位数字。

+2

谢谢我看了文档,但不能真正理解。我很困惑,不应该把它的字面含义解释为零? – Zohaib 2011-12-14 10:40:04

+1

正如文档中所述,当在格式字符串中使用时,不应该将字面值视为零。 – Pieter 2011-12-14 10:41:06

4

#只有在数字不是前导零时才会输入数字。 0将放置一个数字,即使它是一个尾随零。如果您想要打印固定数量的数字,您也可以在前面使用零。

4

随着dp之前的零,像0.23这样的小数字将显示为0.23。没有它,你不会得到前导零,所以它只显示为.23。如果你有像Excel这样的电子表格,你也可以在那里查看。