While this function accepts floats for currency (in order to display cents), you should (for applications where this is critical) never store or handle money using floats, as rounding errors may occur. Work with integers (or a BigInt class if integers aren't large enough) internally instead, where the integer represents the total number of cents. An alternative (especially if you need more precision than cents) is using the BC (Binary Calculator) Math module, that handles arbitrary precision numbers with 100% accuracy.
NumberFormatter::formatCurrency
numfmt_format_currency
(PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
NumberFormatter::formatCurrency -- numfmt_format_currency — Format a currency value
Descrição
Estilo orientado à objeto
string
NumberFormatter::formatCurrency
( float
$value
, string $currency
)Estilo procedural
Format the currency value according to the formatter rules.
Parâmetros
-
fmt -
NumberFormatter object.
-
value -
The numeric currency value.
-
currency -
The 3-letter ISO 4217 currency code indicating the currency to use.
Valor Retornado
String representing the formatted currency value.
Exemplos
Exemplo #1 numfmt_format_currency() example
<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::CURRENCY );
echo numfmt_format_currency($fmt, 1234567.891234567890000, "EUR")."\n";
echo numfmt_format_currency($fmt, 1234567.891234567890000, "RUR")."\n";
$fmt = numfmt_create( 'ru_RU', NumberFormatter::CURRENCY );
echo numfmt_format_currency($fmt, 1234567.891234567890000, "EUR")."\n";
echo numfmt_format_currency($fmt, 1234567.891234567890000, "RUR")."\n";
?>
Exemplo #2 OO example
<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::CURRENCY );
echo $fmt->formatCurrency(1234567.891234567890000, "EUR")."\n";
echo $fmt->formatCurrency(1234567.891234567890000, "RUR")."\n";
$fmt = new NumberFormatter( 'ru_RU', NumberFormatter::CURRENCY );
echo $fmt->formatCurrency(1234567.891234567890000, "EUR")."\n";
echo $fmt->formatCurrency(1234567.891234567890000, "RUR")."\n";
?>
O exemplo acima irá imprimir:
1.234.567,89 € 1.234.567,89 RUR 1 234 567,89€ 1 234 567,89р.
Veja Também
- numfmt_get_error_code() - Get formatter's last error code.
- numfmt_format() - Format a number
- numfmt_parse_currency() - Parse a currency number
Ruben ¶
6 months ago
