Шаблон десятичного формата - PullRequest
9 голосов
/ 14 декабря 2011
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" вместо "#"? какова цель этого нуля? Спасибо за помощь.

Ответы [ 3 ]

18 голосов
/ 14 декабря 2011
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 цифра.

4 голосов
/ 14 декабря 2011

С нулем перед dp маленькие цифры, такие как 0,23, будут отображаться как 0,23.Без него вы не получите ведущий ноль, поэтому он просто отображается как .23.Если у вас есть электронная таблица, например Excel, вы можете проверить это там.

4 голосов
/ 14 декабря 2011

# ставит цифру, только если она не является начальным нулем.0 поставит цифру, даже если это конечный ноль.Вы также можете использовать нули впереди, если хотите печатать фиксированное количество цифр.

...