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"
,这种模式的目的究竟是什么? 我认为它有两个目的
- 分组号码,即千分隔符号
- 在十进制之后附加两个零,如果缺少十进制,则转换为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这样的电子表格,也可以在那里查看。