【问题标题】:Java: Format Numbers with commasJava:用逗号格式化数字
【发布时间】:2020-12-18 18:01:51
【问题描述】:

我只想以“可读性强”的格式输出数字。例如您可以将 100000 输出为 100.000,这样更具可读性。

是否有现有的方法可以用于此?

【问题讨论】:

标签: java numbers number-formatting decimalformat


【解决方案1】:

您可以使用DecimalFormat (Java 7+):

var dfs = new DecimalFormatSymbols();
dfs.setGroupingSeparator('.');
var df = new DecimalFormat("###,##0", dfs);
System.out.println(df.format(100000));

输出:

100.000

DecimalFormat 可以更灵活地按模式将数字转换为字符串。

【讨论】:

  • Double-brace initialization is bad. 不要使用它。此外,NumberFormat.getInstance 比显式使用 DecimalFormat 更好,尤其是在尝试符合默认语言环境或特定语言环境时。
  • 修复Double-brace initialization
  • @VGR - 为什么DecimalFormatNumberFormat 差? ?? 我认为​​ DecimalFormat 更灵活...
  • 在大多数情况下,应用程序会希望以与当前语言环境相对应的格式显示数字。 NumberFormat.getInstance() 会这样做。例如,并非每个国家/地区都使用. 作为分组分隔符。来自DecimalFormat documentation,“分组分隔符通常用于千位,但在某些国家/地区,它分隔一万位。”您可以自己解决这个问题,但使用 NumberFormat.getInstance 可为您提供多元文化支持,无需额外努力。
  • 是的,如果您想覆盖区域设置,那么您可以直接使用 DecimalFormat。这个问题太短了,无法确定这是否是目标,但由于它没有提到自定义格式,我假设常见的情况是所需的情况。
【解决方案2】:

你可以使用NumberFormat:

int n = 100000;
String formatted = NumberFormat.getInstance().format(n);
System.out.println(formatted);

输出:

100,000

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-05-31
  • 2017-12-09
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 1970-01-01
相关资源
最近更新 更多