这是我第一次使用setLocale,我通常讨厌使用它,因为我在共享主机上工作,但自从最近换了工作,我已经获得了服务器控制权,因此能够安装区域设置。
当我在应用程序上切换到fr_CA时,我调用
money_format('%n', $value)
它正确地格式化了货币,但奇怪的是,如果我
number_format($value, 2);
我得到一个用正确的小数(2)格式化的数字,但小数分隔符不是预期的。我得到的是"0.32",而不是区域设置所说的"0,32"。
我甚至检查了服务器上的区域设置,它清楚地显示小数分隔符是一个逗号:
LC_NUMERIC
decimal_point "<U002C>"
thousands_sep "<U0020>"
grouping 3;3
END LC_NUMERIC
我在网上查了一下,U002C确实是逗号…不段…
你对此有何看法?
PS,这是我检查的:
- setLocale返回fr_CA
- setLocale清楚地正确格式化,我的代码没有覆盖调用number_format 中的符号
谢谢
另一种方法是使用localeconv()检索该信息并在number_format()中使用它,类似于:
$locale = localeconv();
echo number_format(
$number,
$locale['frac_digits'],
$locale['decimal_point'],
$locale['thousands_sep']
);