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()(etformatToParts()).
Exemple
#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))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
#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, notammentstyle,currency,unit,minimumFractionDigits,maximumFractionDigitsetnotation.
Plus d’exemples
#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))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' }))const compact = new Intl.NumberFormat('fr-FR', { notation: 'compact' })
console.log(compact.format(1500))
console.log(compact.format(2500000))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.NumberFormatle 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
#- Intl.DateTimeFormatFormate les dates et les heures selon les règles d’une langue et d’un fuseau horaire choisis.
- Number.prototype.toFixed()Convertit un nombre en chaîne de caractères avec un nombre donné de décimales.
- Math.round()Arrondit un nombre à l’entier le plus proche.
- DateUn objet représentant un instant précis, avec des méthodes pour lire et modifier la date et l’heure.
- Number.prototype.toLocaleString()Formate un nombre selon les habitudes de la langue choisie : séparateurs de milliers, virgule, devises et pourcentages.
- Intl.PluralRulesChoisit la bonne forme grammaticale d’un mot selon un nombre, dans la langue choisie. En français : 0 leçon, 1 leçon, 2 leçons.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.