I have a BigDecimal number and i consider only 2 decimal places of it so i truncate it using:
bd = bd.setScale(2, BigDecimal.ROUND_DOWN)
No
If its money use:
NumberFormat.getNumberInstance(java.util.Locale.US).format(bd)
new DecimalFormat("#0.##").format(bd)
The below code may help you.
protected String getLocalizedBigDecimalValue(BigDecimal input, Locale locale) {
final NumberFormat numberFormat = NumberFormat.getNumberInstance(locale);
numberFormat.setGroupingUsed(true);
numberFormat.setMaximumFractionDigits(2);
numberFormat.setMinimumFractionDigits(2);
return numberFormat.format(input);
}
Use stripTrailingZeros()
.
This article should help you.
I used DecimalFormat for formatting the BigDecimal instead of formatting the String, seems no problems with it.
The code is something like this:
bd = bd.setScale(2, BigDecimal.ROUND_DOWN);
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
df.setMinimumFractionDigits(0);
df.setGroupingUsed(false);
String result = df.format(bd);