12
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"而不是"#"小数点前呢?这个零的目的到底是什么?谢谢您的帮助。

4

3 回答 3

21
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 位数字。

于 2011-12-14T10:34:07.310 回答
5

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

于 2011-12-14T10:34:55.590 回答
4

在 dp 前面加上零,像 0.23 这样的小数字将显示为 0.23。没有它,您将不会得到前导零,因此它仅显示为 0.23。如果你有一个像 excel 这样的电子表格,你也可以在那里检查。

于 2011-12-14T10:48:48.760 回答