La classe NumberFormatter
(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)
Introduction
Les programmes stockent et manipulent des nombres en utilisant une représentation locale, binaire et indépendante. Lors de l'affichage d'un nombre, il est converti en une version particulière. Par exemple, un nombre tel que 12345.67 s'écrit "12,345.67" aux USA, "12 345,67" en France et "12.345,67" en Allemagne.
En appelant les méthodes fournies par NumberFormatter, vous pouvez formater les nombres, les montants de devises et les pourcentages, en fonctions des conventions locales. NumberFormatter prend en compte les conventions, ce qui fait que vous devez créer un nouvel objet NumberFormatter, pour chaque convention. Les méthodes de NumberFormatter, formatent des types primitifs comme des nombres décimaux, et produit une chaîne de caractères.
Pour les monnaies, vous pouvez utiliser le format monétaire pour créer un formateur qui retourne une chaîne, avec le symbole de devise approprié. Bien entendu, NumberFormatter ne connait pas les taux de changes, ce qui fait que l'affichage sera fait, quelqu'en soit la devise demandée. Cela signifie que le même nombre aura différentes valeurs monétaires en fonction de la configuration locale. Par exemple, le nombre 9988776.65 s'affichera :
- 9 988 776,65 € en France
- 9.988.776,65 € en Allemagne
- $9,988,776.65 aux USA
Pour formater des pourcentages, vous devez créer un formateur local, avec un type de format pourcentage. Avec ce formateur, une fraction décimale telle que 0.75 sera affichée 75%.
Pour des formatages plus complexes, comme des nombres écrits littéralement, des formateurs à règles sont utilisés.
Synopsis de la classe
Constantes pré-définies
Ces styles sont utilisés par numfmt_create() pour définir le type de formatteur.
-
NumberFormatter::PATTERN_DECIMAL
(entier) - Format décimal défini par un modèle
-
NumberFormatter::DECIMAL
(entier) - Format décimal
-
NumberFormatter::CURRENCY
(entier) - Format monétaire
-
NumberFormatter::PERCENT
(entier) - Format pourcentage
-
NumberFormatter::SCIENTIFIC
(entier) - Format scientifique
-
NumberFormatter::SPELLOUT
(entier) - Format littéral, basé sur des règles
-
NumberFormatter::ORDINAL
(entier) - Format ordinal, basé sur des règles
-
NumberFormatter::DURATION
(entier) - Format de durée, basé sur des règles
-
NumberFormatter::PATTERN_RULEBASED
(entier) - Format de modèle, basé sur des règles
-
NumberFormatter::DEFAULT_STYLE
(entier) - Format par défaut pour les conventions locales
-
NumberFormatter::IGNORE
(entier) - Alias de PATTERN_DECIMAL
Ces constantes définissent la méthode d'analyse et de formattage des nombres. Ils doivent être utilisés comme arguments des fonctions numfmt_format() et numfmt_parse().
-
NumberFormatter::TYPE_DEFAULT
(entier) - Dérive le type depuis le type de variable
-
NumberFormatter::TYPE_INT32
(entier) - Formate / analyse un entier 32 bits
-
NumberFormatter::TYPE_INT64
(entier) - Formate / analyse un entier 64 bits
-
NumberFormatter::TYPE_DOUBLE
(entier) - Formate / analyse un nombre décimal
-
NumberFormatter::TYPE_CURRENCY
(entier) - Formate / analyse une valeur monétaire
Attributs de formats de nombre utilisés par numfmt_get_attribute() et numfmt_set_attribute().
-
NumberFormatter::PARSE_INT_ONLY
(entier) - Analyse uniquement les entiers.
-
NumberFormatter::GROUPING_USED
(entier) - Séparateur de groupes.
-
NumberFormatter::DECIMAL_ALWAYS_SHOWN
(entier) - Affiche toujours une virgule décimale.
-
NumberFormatter::MAX_INTEGER_DIGITS
(entier) - Nombre maximal de chiffres.
-
NumberFormatter::MIN_INTEGER_DIGITS
(entier) - Nombre minimal de chiffres.
-
NumberFormatter::INTEGER_DIGITS
(entier) - Nombre de chiffres.
-
NumberFormatter::MAX_FRACTION_DIGITS
(entier) - Nombre maximal de décimales.
-
NumberFormatter::MIN_FRACTION_DIGITS
(entier) - Nombre minimal de décimales.
-
NumberFormatter::FRACTION_DIGITS
(entier) - Nombre de décimales.
-
NumberFormatter::MULTIPLIER
(entier) - Multiplicateur.
-
NumberFormatter::GROUPING_SIZE
(entier) - Taille de regroupement.
-
NumberFormatter::ROUNDING_MODE
(entier) - Mode d'arrondi.
-
NumberFormatter::ROUNDING_INCREMENT
(entier) - Incrément d'arrondi.
-
NumberFormatter::FORMAT_WIDTH
(entier) - La largeur de complément pour le formattage d'un nombre.
-
NumberFormatter::PADDING_POSITION
(entier) - La position à laquelle le complément se fait. Voyez les constantes de complément pour avoir les différentes valeurs possibles.
-
NumberFormatter::SECONDARY_GROUPING_SIZE
(entier) - Taille secondaire de groupement.
-
NumberFormatter::SIGNIFICANT_DIGITS_USED
(entier) - Utilise les chiffres significatifs.
-
NumberFormatter::MIN_SIGNIFICANT_DIGITS
(entier) - Nombre minimum de chiffres significatifs.
-
NumberFormatter::MAX_SIGNIFICANT_DIGITS
(entier) - Nombre maximum de chiffres significatifs.
-
NumberFormatter::LENIENT_PARSE
(entier) - Mode d'analyse utilisé par les formats à règles.
Attributs de texte pour les formats de nombres, utilisés par numfmt_get_text_attribute() et numfmt_set_text_attribute().
-
NumberFormatter::POSITIVE_PREFIX
(entier) - Préfixe positif.
-
NumberFormatter::POSITIVE_SUFFIX
(entier) - Suffixe positif.
-
NumberFormatter::NEGATIVE_PREFIX
(entier) - Préfixe négatif.
-
NumberFormatter::NEGATIVE_SUFFIX
(entier) - Suffixe négatif.
-
NumberFormatter::PADDING_CHARACTER
(entier) - Le caractère à utiliser pour compléter les formats jusqu'à la taille.
-
NumberFormatter::CURRENCY_CODE
(entier) - Le code de devise ISO.
-
NumberFormatter::DEFAULT_RULESET
(entier) - Le jeu de règles par défaut. Il est uniquement utilisable avec les formatteurs à règles.
-
NumberFormatter::PUBLIC_RULESETS
(entier) - Le jeu de règles publiques. Ceci est uniquement disponible avec les formatteurs à règles. C'est un attribut en lecture seule. Les règles publiques sont retournées sous forme d'une seule chaîne, et chaque règle est délimitée par un point-virgule ';'.
Les symboles de format utilisés par numfmt_get_symbol() et numfmt_set_symbol().
-
NumberFormatter::DECIMAL_SEPARATOR_SYMBOL
(entier) - Le séparateur décimal.
-
NumberFormatter::GROUPING_SEPARATOR_SYMBOL
(entier) - Le séparateur de groupes.
-
NumberFormatter::PATTERN_SEPARATOR_SYMBOL
(entier) - Le modèle de séparateur.
-
NumberFormatter::PERCENT_SYMBOL
(entier) - Le signe de pourcentage.
-
NumberFormatter::ZERO_DIGIT_SYMBOL
(entier) - Zéro.
-
NumberFormatter::DIGIT_SYMBOL
(entier) - Un caractère représentant un chiffre dans un modèle.
-
NumberFormatter::MINUS_SIGN_SYMBOL
(entier) - Le signe moins.
-
NumberFormatter::PLUS_SIGN_SYMBOL
(entier) - Le signe plus.
-
NumberFormatter::CURRENCY_SYMBOL
(entier) - Le symbole de devise.
-
NumberFormatter::INTL_CURRENCY_SYMBOL
(entier) - Le symbole international de devise.
-
NumberFormatter::MONETARY_SEPARATOR_SYMBOL
(entier) - Le séparateur monétaire.
-
NumberFormatter::EXPONENTIAL_SYMBOL
(entier) - Le symbole d'exponentiel.
-
NumberFormatter::PERMILL_SYMBOL
(entier) - Le symbol par mille.
-
NumberFormatter::PAD_ESCAPE_SYMBOL
(entier) - Le caractère de protection des symboles.
-
NumberFormatter::INFINITY_SYMBOL
(entier) - Le symbole de l'infini.
-
NumberFormatter::NAN_SYMBOL
(entier) - Le symbole "n'est pas un nombre".
-
NumberFormatter::SIGNIFICANT_DIGIT_SYMBOL
(entier) - Le symbole des chiffres significatifs.
-
NumberFormatter::MONETARY_GROUPING_SEPARATOR_SYMBOL
(entier) - Le séparateur de groupes monétaires.
Les modes d'arrondi utilisés par les fonctions numfmt_get_attribute()
et numfmt_set_attribute() avec l'attribut
NumberFormatter::ROUNDING_MODE
.
-
NumberFormatter::ROUND_CEILING
(entier) - Mode d'arrondi vers l'infini positif.
-
NumberFormatter::ROUND_DOWN
(entier) - Mode d'arrondi vers zéro.
-
NumberFormatter::ROUND_FLOOR
(entier) - Mode d'arrondi vers l'infini négatif.
-
NumberFormatter::ROUND_HALFDOWN
(entier) - Mode d'arrondi vers le plus proche entier, a moins qu'ils soient équidistants : arrondi inférieur dans ce cas.
-
NumberFormatter::ROUND_HALFEVEN
(entier) - Mode d'arrondi vers le plus proche entier, a moins qu'ils soient équidistants : arrondi vers le nombre pair dans ce cas.
-
NumberFormatter::ROUND_HALFUP
(entier) - Mode d'arrondi vers le plus proche entier, a moins qu'ils soient équidistants : arrondi supérieur dans ce cas.
-
NumberFormatter::ROUND_UP
(entier) - Mode d'arrondi qui éloigne de zéro.
Valeurs de compléments utilisés par numfmt_get_attribute()
et numfmt_set_attribute() avec l'attribut
NumberFormatter::PADDING_POSITION
.
-
NumberFormatter::PAD_AFTER_PREFIX
(entier) - Caractères de compléments ajoutés après le préfixe.
-
NumberFormatter::PAD_AFTER_SUFFIX
(entier) - Caractères de compléments ajoutés après le suffixe.
-
NumberFormatter::PAD_BEFORE_PREFIX
(entier) - Caractères de compléments ajoutés avant le préfixe.
-
NumberFormatter::PAD_BEFORE_SUFFIX
(entier) - Caractères de compléments ajoutés avant le suffixe.
Sommaire
- NumberFormatter::create — Crée un formateur de nombre
- NumberFormatter::formatCurrency — Formate une valeur monétaire
- NumberFormatter::format — Formate un nombre
- NumberFormatter::getAttribute — Lit un attribut
- NumberFormatter::getErrorCode — Lit le dernier code d'erreur du formateur
- NumberFormatter::getErrorMessage — Lit le dernier message d'erreur du formateur
- NumberFormatter::getLocale — Lit la locale du formateur
- NumberFormatter::getPattern — Lit le modèle du formateur
- NumberFormatter::getSymbol — Lit la valeur du symbole
- NumberFormatter::getTextAttribute — Lit un attribut textuel
- NumberFormatter::parseCurrency — Analyse un nombre monétaire
- NumberFormatter::parse — Analyse un nombre
- NumberFormatter::setAttribute — Affecte un attribut du formateur
- NumberFormatter::setPattern — Configure le modèle du formateur
- NumberFormatter::setSymbol — Configure le symbole du formateur
- NumberFormatter::setTextAttribute — Modifie un attribut texte
Version en cache
21/11/2024 23:59:49 Cette version de la page est en cache (à la date du 21/11/2024 23:59:49) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-class.numberformatter.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.