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
- to group numbers, that is put thousand seperator comma
- 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.
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.
#
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.
来源:https://stackoverflow.com/questions/8502976/decimalformat-pattern