如何打印格式化的 BigDecimal 值?

新手上路,请多包涵

I have a BigDecimal field amount which represents money, and I need to print its value in the browser in a format like $123.00 , $15.50 , $0.33

我怎样才能做到这一点?

(我自己看到的唯一简单解决方案是从 floatValue BigDecimal 然后使用 NumberFormat 为小数部分制作两位数精度)。

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

阅读 671
2 个回答
public static String currencyFormat(BigDecimal n) {
    return NumberFormat.getCurrencyInstance().format(n);
}

它将使用您的 JVM 当前默认值 Locale 来选择您的货币符号。或者您可以指定 Locale

 NumberFormat.getInstance(Locale.US)

有关详细信息,请参阅 NumberFormat 类。

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

要设置千位分隔符,比如 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( )。

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

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