阅读提示
本文约 746 字,预计阅读 2 分钟。文中命令与配置均经过实测,可直接参考执行。
本文约 746 字,预计阅读 2 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:德国显示 $1,000.00 怪怪的
货币格式地域强:欧元多写后置 “1.000,00 €”(德)或 “€1,000.00″(爱尔兰);小数点逗号互逆。多语言金额必须按 locale 格式化。
原理分析:格式差异
Intl.NumberFormat(locale,{style:'currency',currency:'EUR'}) 自动按地区排符号位置、千分位与小数点。务必传正确 locale(de-DE、en-IE),而非仅货币码。
保姆级实操
JS:
new Intl.NumberFormat('de-DE',{style:'currency',currency:'EUR'}).format(1234.5); // 1.234,50 €
new Intl.NumberFormat('en-IE',{style:'currency',currency:'EUR'}).format(1234.5); // €1,234.50
PHP 可用 NumberFormatter(intl 扩展):
$f = new NumberFormatter('de_DE', NumberFormatter::CURRENCY);
echo $f->formatCurrency(1234.5, 'EUR');
常见坑
- 只换符号不换分隔,格式错。
- locale 传错,爱尔兰当德国。
- 案例:某站德文金额用美式,改 Intl de-DE 后本地。
- 硬编码 € 前置,德式后置违和。
- 小数位不一致,财务歧义。
总结
判断标准:金额按 locale 格式化(符号/分隔/小数)。行动清单:用 Intl → 传对 locale → 验各语 → 测试边界值。详见多语言日期数字单位格式。
觉得有用?点个赞支持一下
