使用numberFormatter格式化货币

Bra*_*sen 7 php number-formatting

我使用php NumberFormatter类遇到了一些问题.我想要显示没有任何小数的圆形数字,并且具有小数的数字要舍入为2位小数.即

$fmt = new NumberFormatter('nl', NumberFormatter::CURRENCY);
$fmt->setAttribute(\NumberFormatter::MIN_FRACTION_DIGITS, 0);
$fmt->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, 2);

var_dump($fmt->formatCurrency(15.15, 'EUR')); //Outputs € 15,15
var_dump($fmt->formatCurrency(15, 'EUR')); //Outputs € 15,00
Run Code Online (Sandbox Code Playgroud)

你可以看到最后一个转储正在输出,15,00但我在15这里期待.每当我使用"完整"语言环境nl_NL而不是nl格式化程序的行为符合预期,但我无法使用它,因为我只有我的语言环境中可用的语言.

$fmt = new NumberFormatter('nl_NL', NumberFormatter::CURRENCY);
$fmt->setAttribute(\NumberFormatter::MIN_FRACTION_DIGITS, 0);
$fmt->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, 2);

var_dump($fmt->formatCurrency(15.15, 'EUR')); //Outputs € 15,15
var_dump($fmt->formatCurrency(15, 'EUR')); //Output € 15
Run Code Online (Sandbox Code Playgroud)

这似乎是NumberFormatter中的一个错误,但我真的不知道如何解决它或找出其他一些解决方法.我会非常感谢任何帮助.

Fre*_*ald 0

脏修复:

$formattedCurrency = preg_replace('/,00$/', '', $fmt->formatCurrency(15, 'EUR'));
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。顺便说一句,它应该是`/[,\.]00$/`,因为在英语中他们使用点。15:00 (2认同)