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 — Formate une valeur monétaire
Description
Style orienté objet
string
NumberFormatter::formatCurrency
( float
$value
, string $currency
)Style procédural
Formate une valeur monétaire, en fonction des règles du formateur.
Liste de paramètres
-
fmt -
L'objet NumberFormatter.
-
value -
La valeur numérique.
-
currency -
Le code à trois lettres ISO 4217 de la devise à utiliser.
Valeurs de retour
La chaîne représentant la valeur formatée.
Exemples
Exemple #1 Exemple avec numfmt_format_currency(), Style procédural
<?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";
?>
Exemple #2 Exemple avec numfmt_format_currency(), style POO
<?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";
?>
L'exemple ci-dessus va afficher :
1.234.567,89 € 1.234.567,89 RUR 1 234 567,89€ 1 234 567,89р.
Voir aussi
- numfmt_get_error_code() - Lit le dernier code d'erreur du formateur
- numfmt_format() - Formate un nombre
- numfmt_parse_currency() - Analyse un nombre monétaire
Ruben ¶
7 months ago
