请使用以下代码:
$formatter = new NumberFormatter('fr_FR', NumberFormatter::CURRENCY);
echo $formatter->formatCurrency('-1.23', 'EUR');
在Fedora 25上,输出为-1,23 €
,这是我期待的输出。
在CentOS 7上,输出为(1,23 €)
;对法国观众而言并不十分明确。
这些差异来自何处?我怀疑它们来自系统上安装的libicu
版本,但我需要对此进行确认。另外,我不确定PHP是使用系统上安装的ICU版本,还是编译时捆绑的版本。
CentOS 7有libicu-50.1.2-15
,Fedora 25有libicu-57.1-4
,但两个系统上的PHP版本相同,所有包都来自同一个存储库(remi),所以如果ICU与PHP捆绑在一起,我希望它们的版本完全相同。
答案 0 :(得分:1)
PHP in" remi"存储库(和AFAIK所有第三方存储库)使用系统libicu,因为PHP中没有捆绑的libicu。
(使用libicu 50的EL-6的remi存储库中的软件包中的唯一例外,从EL-7而不是默认的4.2反向移植)
答案 1 :(得分:1)
可能的解决方法,设置输出模式:
dcos_agent_node-7
在Fedora 25(icu 58)和RHEL-7(icu 50)上测试:
来自ICU Documentation - Decimal Format - Detailed description
如果没有明确的负子模式,则负子模式 是在正子模式前面加上的局部减号。