为什么PHP的的NumberFormatter镍四舍五入格式化瑞士法郎数额?

问题描述 投票:0回答:1

使用关于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 currency icu intl
1个回答
1
投票

其实答案就在于PHP之外,其PHP通过ICU library包裹Internationalization extension内。事实证明,我有其中包括在其中的镍四舍五入错误ICU库的过时版本(50.X)。更新到最近的ICU库(截至今天,63.1的),将允许您使用最先进的最新国际标准,包括这个bug修正。我不能确定它的ICU的具体升级固定我的问题,但我知道的是,最新的修订本。

至于为什么会这样摆在首位,瑞士本国货币逐步淘汰0.01面值,最低面额其实0.05的现金金额为。潜在的,谁在ICU工作的开发者糊涂了读,说,this Unicode chart最初可能会出现误导。

有关:

© www.soinside.com 2019 - 2024. All rights reserved.