Intl.NumberFormat

Formate des nombres selon les règles d’une langue donnée : séparateurs, devises, pourcentages et unités.

Renvoie
Un objet formateur avec une méthode format() (et formatToParts()).
Sur cette page

Exemple

#
JavaScript
const price = new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR' })

console.log(price.format(49))
console.log(price.format(1299.5))
console.log(new Intl.NumberFormat('fr-FR').format(1234567.891))
Console
49,00 €
1 299,50 €
1 234 567,891

Définition et utilisation

#

Intl.NumberFormat est un formateur de nombres intégré qui connaît les conventions d’écriture de différentes langues et pays. En France, la partie décimale est séparée par une virgule et les milliers par une espace, alors qu’aux États-Unis c’est l’inverse : un point pour la partie décimale et une virgule pour les milliers. Plutôt que d’écrire cela à la main, vous créez un formateur pour la langue choisie et appelez sa méthode format().

L’option style définit le type de nombre : "decimal" (par défaut), "currency" pour les montants (nécessite une devise, par ex. currency: "EUR"), "percent" pour les pourcentages (la valeur 0.85 donne « 85 % ») et "unit" pour les unités de mesure. Les options minimumFractionDigits et maximumFractionDigits fixent le nombre de décimales, et notation: "compact" raccourcit les grands nombres, par ex. en « 1,5 k ».

Créer un formateur coûte un peu, donc si vous formatez beaucoup de nombres, créez-le une seule fois et réutilisez-le. Pour un usage ponctuel, la méthode plus courte des nombres toLocaleString() suffit, et elle accepte les mêmes options.

Syntaxe

#
Syntaxe
new Intl.NumberFormat(locales)
new Intl.NumberFormat(locales, options)

formatter.format(number)

Paramètres

#
  • locales

    optionnel, chaîne ou tableau

    Un code de langue, par ex. "fr-FR", "en-US" ou "de-DE". Omis, il correspond à la langue du navigateur.
  • options

    objet optionnel

    Des réglages, notamment style, currency, unit, minimumFractionDigits, maximumFractionDigits et notation.

Plus d’exemples

#
Pourcentages et décimales
JavaScript
const percent = new Intl.NumberFormat('fr-FR', { style: 'percent' })
const twoDigits = new Intl.NumberFormat('fr-FR', {
  minimumFractionDigits: 2,
  maximumFractionDigits: 2
})

console.log(percent.format(0.85))
console.log(twoDigits.format(3.14159))
console.log(twoDigits.format(7))
Console
85 %
3,14
7,00
Langues et devises différentes
JavaScript
const amount = 1234.5

console.log(new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(amount))
console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(amount))
console.log(amount.toLocaleString('fr-FR', { style: 'currency', currency: 'EUR' }))
Console
$1,234.50
1.234,50 €
1 234,50 €
Notation compacte pour les grands nombres
JavaScript
const compact = new Intl.NumberFormat('fr-FR', { notation: 'compact' })

console.log(compact.format(1500))
console.log(compact.format(2500000))
Console
1,5 k
2,5 M

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Le séparateur des milliers n’est pas universel : l’anglais utilise une virgule, l’allemand un point. Ne l’écrivez jamais à la main, laissez Intl.NumberFormat le choisir pour la langue cible.
  • Le séparateur des milliers en notation française est une espace fine insécable (\u202f), pas une espace normale, et une espace insécable (\u00a0) précède le symbole de la devise. Si vous comparez le résultat dans des tests, tenez compte de ces caractères.
  • Créez le formateur une seule fois, hors de la boucle, et réutilisez-le. Pour un seul nombre, nombre.toLocaleString("fr-FR") suffit.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.