java - 将 BigDecimal 格式化为最多 2 个十进制数字的字符串,在小数部分删除 0

我有一个 BigDecimal 数字,我只考虑它的 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() 的字符串?

最佳答案

我使用 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);

https://stackoverflow.com/questions/10269045/

相关文章:

objective-c - 将秒整数转换为 HH :MM, iPhone

c# - 文件大小格式提供程序

visual-studio - 如何在 Visual Studio (Express) 2008 中

objective-c - 将字符串转换为 NSDate

c - 如何在 C 中使用逗号作为千位分隔符来格式化数字?

c++ - 我应该在我的 C++ 代码中使用 printf 吗?

c# - 如何使 Visual Studio 不将 { 放在新行上?

python - 在 Python 中的文件末尾声明函数

intellij-idea - 如何在 WebStorm 中自动格式化代码?

xml - 在 Eclipse 中格式化 XML 代码