php – 如何让NumberFormatter打印带负号的负货币值?
我正在使用
PHP
NumberFormatter类来打印货币值.
例如: $cFormatter = new NumberFormatter('en_US',NumberFormatter::CURRENCY); $cFormatter->formatCurrency(123,'USD'); $cFormatter->formatCurrency(123,'BRL'); $cFormatter->formatCurrency(123,'GBP'); 工作正常,并按预期分别返回“$123.00”,“R $123.00”,“£123.00”. 但负数字印在“会计风格”上,用括号括起来,而不是前导减去“ – ”. 例如: $cFormatter->formatCurrency(-456,'USD'); 返回“($456.00)”,而我想要“ – $456.00”.当然有一种简单的方法可以做到这一点? 我可以通过覆盖前缀和后缀删除括号,如下所示: $cFormatter->setTextAttribute(NumberFormatter::NEGATIVE_PREFIX,"-"); $cFormatter->setTextAttribute(NumberFormatter::NEGATIVE_SUFFIX,""); 但后来我没有货币符号,例如“-456.00”. 在设置NEGATIVE_PREFIX属性时,是否需要使用货币符号的转义码? 编辑:我很高兴设置一个不同的区域设置,如果这给了我正在寻找的结果. 编辑2:查看Intl library docs(用于实现NumberFormatter的库),以下内容看起来很有希望:
但是这个: $cFormatter->setTextAttribute(NumberFormatter::NEGATIVE_PREFIX,"-¤"); 只需打印“-¤123”,就没有喜悦. 编辑3:我想我找到了答案,见下文.
我发现将en_US语言环境行为弯曲到我正在寻找的东西–7000 /
setPattern()函数稍微不那么粗鲁.
$cFormatter = new NumberFormatter('en_US',NumberFormatter::CURRENCY); $sPattern = $cFormatter->getPattern(); // returns "¤#,##0.00;(¤#,##0.00)"; $sMyPattern = "¤#,##0.00;-¤#,##0.00"; $cFormatter->setPattern($sMyPattern); $cFormatter->formatCurrency(-456,'USD'); // returns -$456.00 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |