# 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

NumberFormatter {
/* Méthodes */
public __construct ( string `$locale` , int `$style` [, string `$pattern` ] )
public static create ( string `$locale` , int `$style` [, string `$pattern` ] ) : NumberFormatter
public formatCurrency ( float `$value` , string `$currency` ) : string
public format ( number `$value` [, int `$type` ] ) : string
public getAttribute ( int `$attr` ) : int
public getErrorCode ( void ) : int
public getErrorMessage ( void ) : string
public getLocale ([ int `$type` ] ) : string
public getPattern ( void ) : string
public getSymbol ( int `$attr` ) : string
public getTextAttribute ( int `$attr` ) : string
public parseCurrency ( string `$value` , string `&$currency` [, int `&$position` ] ) : float
public parse ( string `$value` [, int `$type` [, int `&$position` ]] ) : mixed
public setAttribute ( int `$attr` , int `$value` ) : bool
public setPattern ( string `$pattern` ) : bool
public setSymbol ( int `$attr` , string `$value` ) : bool
public setTextAttribute ( int `$attr` , string `$value` ) : bool
}

## 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.

## Voir aussi

- » Documentation de formatage ICU
- » Formateurs de nombres ICU
- » Formateur de nombres décimaux ICU
- » Formateurs à règles de ICU

## 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