将BigDecimal格式化为最大2位十进制数字,删除小数部分的0
我有一个BigDecimal号码,我认为只有2位小数,所以我截断它使用:
bd = bd.setScale(2, BigDecimal.ROUND_DOWN)
现在我想打印它作为string,但删除小数部分,如果它是0,例如:
1.00 – > 1
1.50 – > 1.5
1.99 – > 1.99
我尝试使用Formatter,formatter.format,但我总是得到2个十进制数字。
我怎样才能做到这一点? 也许工作从bd.toPlainString()string?
我使用DecimalFormat格式化BigDecimal而不是格式化string,似乎没有问题。
代码是这样的:
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);
new DecimalFormat("#0.##").format(bd)
使用stripTrailingZeros()
。
这篇文章应该帮助你。
下面的代码可能会帮助你。
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); }
如果它的钱使用:
NumberFormat.getNumberInstance(java.util.Locale.US).format(bd)