将 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,formatter.format,但我总是得到 2 个小数位。

我怎样才能做到这一点?也许处理来自 bd.toPlainString() 的字符串?

原文由 res1 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 722
2 个回答

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

原文由 res1 发布,翻译遵循 CC BY-SA 4.0 许可协议

new DecimalFormat("#0.##").format(bd)

原文由 Federico Cattozzi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题