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

Java中如何使用NumberFormat实现hr地区自定义货币格式化

问题根因

NumberFormat.getInstance()在不传参的情况下,会使用JVM当前的默认地区规则执行格式化,你的运行环境默认Locale不是克罗地亚(hr),因此输出了千分位为,、小数位为.的2,300.99格式,不符合预期。

解决方案

格式化时显式传入克罗地亚地区对应的Locale实例即可,hr地区的官方数字书写规则就是用.做千分位分隔符、,做小数分隔符,会直接输出你要的2.300,99结果。
修改后的完整代码:

import java.text.NumberFormat;
import java.util.Locale;

class Main {
    public static void main(String[] args) {
        String in = "2300.99 EUR";
        String out = formatCurrency(in);
        System.out.println(out);
    }
    
    private static String formatCurrency(String txt) {
        String[] part = txt.split(" ", 2);
        Double num = Double.parseDouble(part[0]);
        // 指定hr地区格式化实例
        NumberFormat hrNumberFormat = NumberFormat.getInstance(Locale.forLanguageTag("hr"));
        return hrNumberFormat.format(num);
    }
}
可选扩展
  • 如果需要连同货币符号按hr地区规则展示,可将NumberFormat.getInstance替换为NumberFormat.getCurrencyInstance,传入相同的hr Locale即可,输出会自动适配当地货币展示规范
  • 原代码return行末尾多写了一个冗余分号,上述代码已做清理

内容的提问来源于stack exchange,提问作者Hrvoje T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 12:51:22