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表示小数分隔符前至少有一位数。

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

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