为了账号安全,请及时绑定邮箱和手机立即绑定

如何打印格式化的BigDecimal值?

如何打印格式化的BigDecimal值?

幕布斯7119047 2019-11-29 14:44:53
我有一个BigDecimal字段amount代表钱,我需要打印其值在浏览器中一样的格式$123.00,$15.50,$0.33。我怎样才能做到这一点?(我看到的唯一简单的解决方案是floatValue从中获取分数BigDecimal,然后用它NumberFormat来使小数部分达到两位数的精度)。
查看完整描述

3 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

要设置千位分隔符,说123,456.78您必须使用DecimalFormat:


     DecimalFormat df = new DecimalFormat("#,###.00");

     System.out.println(df.format(new BigDecimal(123456.75)));

     System.out.println(df.format(new BigDecimal(123456.00)));

     System.out.println(df.format(new BigDecimal(123456123456.78)));

结果如下:


123,456.75

123,456.00

123,456,123,456.78

尽管设置了#,###.00遮罩,但它也成功地格式化了较长的值。请注意,结果中的逗号分隔符取决于您的语言环境。对于俄罗斯语言环境,可能只是space()。


查看完整回答
反对 回复 2019-11-29
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

对于给定情况,另一种可能有意义的方法是


BigDecimal newBD = oldBD.setScale(2);

我之所以这样说,是因为在某些情况下,金钱超过小数点后2位是没有意义的。更进一步,这可能导致


String displayString = oldBD.setScale(2).toPlainString();

但是我只想突出显示setScale方法(它也可以使用第二个舍入模式参数来控制如何处理最后一个小数位。在某些情况下,Java会强制您指定此舍入方法)。


查看完整回答
反对 回复 2019-11-29
  • 3 回答
  • 0 关注
  • 789 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信