【发布时间】:2020-12-18 18:01:51
【问题描述】:
我只想以“可读性强”的格式输出数字。例如您可以将 100000 输出为 100.000,这样更具可读性。
是否有现有的方法可以用于此?
【问题讨论】:
标签: java numbers number-formatting decimalformat
我只想以“可读性强”的格式输出数字。例如您可以将 100000 输出为 100.000,这样更具可读性。
是否有现有的方法可以用于此?
【问题讨论】:
标签: java numbers number-formatting decimalformat
您可以使用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
DecimalFormat 比NumberFormat 差? ?? 我认为 DecimalFormat 更灵活...
NumberFormat.getInstance() 会这样做。例如,并非每个国家/地区都使用. 作为分组分隔符。来自DecimalFormat documentation,“分组分隔符通常用于千位,但在某些国家/地区,它分隔一万位。”您可以自己解决这个问题,但使用 NumberFormat.getInstance 可为您提供多元文化支持,无需额外努力。
你可以使用NumberFormat:
int n = 100000;
String formatted = NumberFormat.getInstance().format(n);
System.out.println(formatted);
输出:
100,000
【讨论】:
NumberFormat.getInstance()返回一个配置了系统语言环境的实例。例如,在德语系统上,输出应该是100.000。可以通过调用NumberFormat.getinstance(Locale) 显式配置语言环境