You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 18与Java 19的货币格式化差异问题咨询

Java 18 迁移至 Java 19 时加拿大法语 locale 货币格式化输出差异说明

这是预期变更,并非你的操作有误。

差异的根源在于 Java 19 升级了依赖的 Unicode CLDR(通用区域数据仓库)版本,其中针对加拿大法语(Locale.CANADA_FRENCH)的货币格式规则被调整:不再默认显示货币代码"CA",仅保留货币符号"$"。这类区域数据的更新通常不会单独出现在 Java 版本的核心发布说明中,而是包含在 CLDR 版本升级的相关备注里。

如果需要强制恢复 Java 18 的输出样式(显示货币代码),可以通过自定义格式模式实现:

NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance(Locale.CANADA_FRENCH);
currencyFormatter.setMaximumFractionDigits(2);
currencyFormatter.setCurrency(Currency.getInstance(Locale.CANADA_FRENCH));

// 自定义格式,添加货币代码显示
if (currencyFormatter instanceof DecimalFormat decimalFormat) {
    DecimalFormatSymbols symbols = decimalFormat.getDecimalFormatSymbols();
    decimalFormat.applyPattern("#,##0.00 ¤ ¤¤");
    decimalFormat.setDecimalFormatSymbols(symbols);
}

var result = currencyFormatter.format(100);
System.out.println(result); // 输出 100,00 $ CA

内容的提问来源于stack exchange,提问作者Jakub Bręk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:47:19