将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)