使用关于formatCurrency()
类NumberFormatter
方法与CHF(瑞士法郎)货币量四舍五入到最近的镍量(0.05)为我。
码:
$formatter = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
echo $formatter->formatCurrency('12.34', 'CHF');
结果:
CHF12.35
请注意,数字量12.34两轮高达12.35。起初,我以为这可能是预期和处理,我不熟悉的钱了新的途径。事实证明,这不是它是如何工作的。 (https://money.stackexchange.com/q/105014/81599)
为什么四舍五入向上/向下在PHP最近的镍量,以及如何解决它?
其实答案就在于PHP之外,其PHP通过ICU library包裹Internationalization extension内。事实证明,我有其中包括在其中的镍四舍五入错误ICU库的过时版本(50.X)。更新到最近的ICU库(截至今天,63.1的),将允许您使用最先进的最新国际标准,包括这个bug修正。我不能确定它的ICU的具体升级固定我的问题,但我知道的是,最新的修订本。
至于为什么会这样摆在首位,瑞士本国货币逐步淘汰0.01面值,最低面额其实0.05的现金金额为。潜在的,谁在ICU工作的开发者糊涂了读,说,this Unicode chart最初可能会出现误导。
有关: