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 — Dar formato a un valor monetario
Descripción
Estilo orientado a objetos
string
NumberFormatter::formatCurrency
( float
$value
, string $currency
)Estilo por procedimientos
Dar formato al valor monetario según las reglas del formateador.
Parámetros
-
fmt -
Objeto NumberFormatter.
-
value -
El valor numérico monetario.
-
currency -
El código 3-letter ISO 4217 de moneda que indica la moneda a usar.
Valores devueltos
Un string representando el valor de moneda formateado.
Ejemplos
Ejemplo #1 Ejemplo de numfmt_format_currency()
<?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";
?>
Ejemplo #2 Ejemplo orientado a objetos
<?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";
?>
El resultado del ejemplo sería:
1.234.567,89 € 1.234.567,89 RUR 1 234 567,89€ 1 234 567,89р.
Ver también
- numfmt_get_error_code() - Obtener el último código de error del formateador
- numfmt_format() - Dar formato a un número
- numfmt_parse_currency() - Procesa un número monetario
Ruben ¶
6 months ago
