DecimalFormat模式

Zoh*_*aib 9 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;
    }
Run Code Online (Sandbox Code Playgroud)

"###,###,###,###,##0.00",这种模式的目的究竟是什么?我认为它有两个目的

  1. 分组号码,即千分隔符号
  2. 在十进制之后附加两个零,如果缺少十进制,则转换为23到23.00

但为什么有"0"而不是"#"十进制之前?这零的目的究竟是什么?谢谢您的帮助.

Pie*_*ter 18

Symbol  Location    Localized?  Meaning
0       Number      Yes         Digit
#       Number      Yes         Digit, zero shows as absent 
Run Code Online (Sandbox Code Playgroud)

来自:http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html

所以#当没有数量未显示.前导0意味着小数分隔符前至少有一位数字.

  • 谢谢我查看了文档,但无法理解.我感到很困惑,不应该用它的字面意思吗? (2认同)

das*_*ght 5

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