Pregunta

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", What exactly is the purpose of this pattern ? I believe it serves two purposes

  1. to group numbers, that is put thousand seperator comma
  2. to append two zeros after decimal if decimal is missing that is convert 23 to 23.00

But why there is "0" instead of "#" before decimal? what exactly is the purpose of this zero? Thanks for the help.

¿Fue útil?

Solución

Symbol  Location    Localized?  Meaning
0       Number      Yes         Digit
#       Number      Yes         Digit, zero shows as absent 

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

So # is not shown when there is no number. The leading 0 means there will be at least 1 digit before the decimal separator.

Otros consejos

# will put a digit only if it is not a leading zero. 0 will put a digit even if it is a trailing zero. You could use zeros in front, too, if you wanted a fixed number of digits printed.

With the zero before the dp, small numbers like 0.23 will be displayed as 0.23. Without it you will not get the leading zero, so it is just displayed as .23. If you have a spreadsheet like excel you can check this there too.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top