将 BigDecimal 格式设置为字符串,最多包含 2 个十进制数字,删除小数部分上的 0

2022-08-31 11:56:43

我有一个大十进制数,我只考虑它的2个小数位,所以我用:

bd = bd.setScale(2, BigDecimal.ROUND_DOWN)

现在我想将其打印为字符串,但如果它是0,则删除小数部分,例如:

1.00 -> 1

1.50 -> 1.5

1.99 -> 1.99

我尝试使用格式化程序,formatter.format,但我总是得到2个十进制数字。

我该怎么做?也许在bd.toPlainString()的字符串上工作?


答案 1

我用来格式化而不是格式化,似乎没有问题。DecimalFormatBigDecimalString

代码如下所示:

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

答案 2
new DecimalFormat("#0.##").format(bd)

推荐