Formateur de nombres, gratuit
Formatez les nombres avec virgules, abréviations, symboles monétaires et décimales personnalisées.
Comment ça marche
- Entrez votre nombre : tapez ou collez une valeur numérique, entiers, décimaux, grands nombres ou notation scientifique.
- Choisissez les options de format : sélectionnez votre locale (US, EU, etc.), le nombre de décimales, le séparateur de groupement et le symbole monétaire si nécessaire.
- Copiez le résultat formaté : le nombre s'affiche dans le format choisi instantanément. Copiez-le pour l'utiliser dans des rapports, documents ou exports.
Pourquoi utiliser le formateur de nombres ?
Les nombres signifient des choses différentes selon les locales. Les États-Unis écrivent mille comme 1,000.00 alors que de nombreux pays européens l'écrivent 1.000,00. Copier des nombres bruts entre systèmes cause des erreurs d'analyse, des mauvaises lectures et des erreurs financières. Le formateur de nombres garantit que vos nombres s'affichent correctement pour n'importe quel public, préparation de rapports financiers, localisation de contenu ou nettoyage de données pour présentation.
Fonctionnalités
- Formatage adapté à la locale : prend en charge les formats US, EU et internationaux avec des séparateurs décimaux et de groupement corrects.
- Contrôle de précision des décimales : définissez exactement combien de décimales afficher.
- Groupement des milliers : ajoutez ou retirez les séparateurs de milliers en un clic.
- Formatage monétaire : préfixez un symbole monétaire et formatez comme une valeur monétaire.
- Notation scientifique : convertissez de ou vers la notation scientifique pour les très grands ou très petits nombres.
Questions fréquentes
Quelle est la différence entre le format numérique US et européen ?
Aux États-Unis, le séparateur décimal est un point (.) et le séparateur de milliers est une virgule (,), par ex. 1,234.56. Dans la plupart de l'Europe, c'est l'inverse : 1.234,56. Cet outil convertit correctement entre les deux formats.
Puis-je formater des nombres pour des devises ?
Oui. Activez le mode monétaire et choisissez un symbole ($ € £ ¥, etc.) pour le préfixer au nombre formaté. Pour des formats comptables avec conventions de nombres négatifs, activez le mode comptable.
Gère-t-il les nombres très grands ou très petits ?
Oui. Le formateur gère les nombres à plusieurs chiffres et peut les afficher en notation standard, groupée ou scientifique. La précision en virgule flottante est appliquée aux décimales configurées.
D'où viennent les standards de formatage des nombres
Les formats numériques que vous voyez aujourd'hui dans les logiciels sont définis par une petite pile de standards qui a mis trente ans à se stabiliser. IEEE 754 (1985), révisé en 2008 et 2019, a fixé la disposition binaire des nombres à virgule flottante: 64 bits répartis en 1 signe, 11 exposant, 52 mantisse, ce qui correspond à chaque nombre JavaScript sous le capot. ISO 4217 (1978, édition actuelle 2015) a défini les codes de devises à trois lettres, USD, EUR, JPY, INR, BRL, et combien d'unités mineures chacun possède (2 pour USD, 0 pour JPY, 3 pour KWD, 4 pour CLF). Le Unicode CLDR (Common Locale Data Repository), publié pour la première fois en 2003, est le jeu de données ouvert qui enregistre les séparateurs de groupes, les séparateurs décimaux, les symboles monétaires et les règles de pluriel pour chaque locale; la version actuelle est CLDR 46 (octobre 2024). ECMA-402 (2012), l'API d'internationalisation ECMAScript, a donné à JavaScript une liaison native vers ces données via Intl.NumberFormat, qui est soutenue par ICU (International Components for Unicode) dans V8, JavaScriptCore et SpiderMonkey. Ensemble, ces quatre specs font que (1234567).toLocaleString('de-DE') retourne 1.234.567 au lieu de 1,234,567.
Les six modèles de locale que vous rencontrerez
La plupart des formats numériques rencontrés dans la nature appartiennent à six modèles. Mémoriser ces six couvre ~95% de la base utilisateur de tout produit mondial.
- en-US, en-GB, ja-JP, zh-CN, ko-KR, groupe virgule, décimale point:
1,234,567.89. - de-DE, es-ES, it-IT, nl-NL, pt-BR, groupe point, décimale virgule:
1.234.567,89. Attention à coller ceci dans un tableur américain. - fr-FR, ru-RU, sv-SE, pl-PL, groupe espace insécable étroit (Unicode U+202F), décimale virgule:
1 234 567,89. Le séparateur n'est pas un espace ordinaire; un copier-coller à travers des systèmes qui normalisent les espaces le corrompra. - de-CH, groupe guillemet apostrophe droit (U+2019), décimale point:
1’234’567.89. La Suisse est unique ici. - en-IN, hi-IN, groupe virgule, décimale point, mais le regroupement est 2-2-3 au lieu de 3-3-3:
12,34,567.89. Cela reflète le système lakh/crore: 1 lakh = 10⁵, 1 crore = 10⁷. - ar-EG, ar-SA, chiffres arabo-indiens (٠١٢٣٤٥٦٧٨٩), décimale arabe U+066B, séparateur de milliers arabe U+066C:
١٬٢٣٤٬٥٦٧٫٨٩. La plupart des environnements de développement arabophones utilisent des chiffres latins en interne et ne basculent que pour l'affichage.
Modes d'arrondi, ce qu'ils font vraiment
ECMA-402 (2023) a ajouté neuf modes d'arrondi à Intl.NumberFormat. Le choix change les totaux financiers, les rapports scientifiques et les calculs fiscaux. Trois comptent le plus en pratique.
halfExpand(défaut). 2,5 s'arrondit à 3, −2,5 s'arrondit à −3. C'est l'arrondi que tout le monde a appris à l'école et le défaut JavaScript.halfEven(arrondi du banquier). 2,5 s'arrondit à 2, 3,5 s'arrondit à 4, les égalités vont toujours au chiffre pair. Requis par IEEE 754 pour l'arithmétique à virgule flottante. Utilisé dans les tables fiscales américaines, l'informatique scientifique et les systèmes comptables majeurs pour supprimer un petit biais systématique quehalfExpandintroduit sur des millions d'arrondis.trunc. Jette tout après le seuil sans arrondir. 2,9 à 2, −2,9 à −2. Utilisé quand vous voulez littéralement perdre de la précision, jamais pour de l'argent.- Les six autres (
ceil,floor,expand,halfCeil,halfFloor,halfTrunc) gèrent des cas spécialisés comme arrondir toujours vers le haut pour les frais d'expédition ou toujours vers le bas pour les remises fiscales. Choisissez délibérément, n'acceptez pas le défaut si l'argent ou la conformité sont en jeu.
Où cet outil gagne sa place
- Rapports financiers. Formatez chiffre d'affaires, dépenses, ratios pour des présentations. Basculez entre formats US et EU pour correspondre au pays de l'audience.
- Vérification de locale pour votre boutique. Tapez un prix au format souhaité et vérifiez qu'il correspond à ce que votre site e-commerce affiche pour un client en Allemagne ou en Inde.
- Préparation CSV. Convertissez les lignes allemandes
1.234,56en US1234.56avant import dans une feuille qui attend la décimale point, ou vice-versa. - Formatage roupie indienne. Transformez 12 500 000 en 1,25,00,000 (1,25 crore) pour les audiences sud-asiatiques. La plupart des outils américains ne le font pas.
- Affichage compact pour tableaux de bord. Transformez 1 234 567 en
1.23Mpour les widgets où l'espace horizontal est restreint. La notation compacte est aussi locale-aware: l'allemand affiche1,23 Mio. - Symbole monétaire en préfixe. Ajoutez $, €, £, ¥, ₹ à la bonne position pour chaque locale, le dollar US est devant, l'euro allemand est après.
- Échappement notation scientifique Excel. Les gros IDs collés comme les snowflakes Twitter sont convertis en
1.23E+18et perdent en précision. Formatez-les avec regroupement plus apostrophe en tête avant de coller pour qu'Excel les traite comme du texte.
Erreurs qui piègent même les développeurs expérimentés
- Arithmétique à virgule flottante sur l'argent.
0.1 + 0.2 === 0.30000000000000004dans tout langage IEEE 754, pas seulement JavaScript. Stockez la monnaie en unités mineures entières (centimes) ou utilisez une bibliothèque décimale commedecimal.js. Le formatage cache l'erreur, il ne la corrige pas. - Parsage naïf de chaînes de locale.
parseFloat("1,234.56")retourne1, pas1234.56.parseFloat("1.234,56")retourne1.234. Pour parser un nombre formaté en locale, retirez les séparateurs de groupe puis remplacez la marque décimale, idéalement piloté parIntl.NumberFormat(locale).formatToParts(). - Perte de précision sur les grands entiers. Les entiers au-dessus de
2⁵³ − 1 = 9 007 199 254 740 991perdent silencieusement leur précision quand stockés ennumber. Les IDs Twitter, IDs Stripe, hachages de transactions blockchain dépassent tous cela. Recevez-les en chaînes ou utilisezBigInt;Intl.NumberFormataccepte BigInt nativement. - Unités mineures à la Stripe. Stripe envoie
amount: 499pour 4,99 $. Divisez par 100 (ou par le compte d'unités mineures ISO 4217 pour la devise) avant formatage. JPY, KRW, VND, ISK, HUF utilisent 0 unité mineure, pas de division nécessaire. - L'entrée pourcentage est une fraction.
new Intl.NumberFormat('en', {style: 'percent'}).format(0.5)retourne50%, pas0.5%. Multipliez votre valeur stockée par 0,01 avant formatage si vous l'avez stockée comme pourcentage. - Construire NumberFormat dans une boucle chaude. Chaque appel constructeur charge les données de locale ICU. Réutilisez une seule instance entre les appels: 1M de formatages avec une instance mise en cache prend ~60 ms en V8, ~3 s si vous construisez à neuf à chaque fois.
- JPY avec deux décimales.
¥1000.00est faux parce que le JPY a 0 unité mineure. MettezminimumFractionDigits: 0, maximumFractionDigits: 0pour JPY, KRW, VND, ISK, HUF, CLP.
Questions plus fréquentes
Pourquoi 0,1 + 0,2 n'est-il pas égal à 0,3?
Parce que les flottants binaires IEEE 754 ne peuvent stocker la fraction décimale 0,1 exactement, de la même façon que la base 10 ne peut stocker 1/3 exactement. Le double 64 bits le plus proche de 0,1 est approximativement 0,1000000000000000055511151231257827021181583404541015625. Additionner deux telles approximations produit un résultat qui s'arrondit à 0,30000000000000004 au lieu de 0,3. Tout langage IEEE 754 a ce comportement: Java, Python, C++, Swift, tous. Pour de l'arithmétique décimale exacte, utilisez des centimes entiers ou une bibliothèque comme decimal.js / Decimal Python / BigDecimal Java.
Quelle est la différence entre Intl.NumberFormat et toLocaleString?
Même moteur, ergonomie différente. (1234.5).toLocaleString('de-DE', {style: 'currency', currency: 'EUR'}) et new Intl.NumberFormat('de-DE', {style: 'currency', currency: 'EUR'}).format(1234.5) produisent une sortie identique. La différence: Intl.NumberFormat est réutilisable, donc si vous formatez beaucoup de nombres avec les mêmes options, instanciez une fois et mettez en cache. toLocaleString lit les options du constructeur à chaque appel et est dramatiquement plus lent dans les boucles serrées.
Comment fonctionne le système de numérotation indien?
L'anglais indien et le hindi groupent les chiffres en motif 2-2-3 au lieu de 3-3-3: les trois chiffres les plus à droite, puis des groupes de deux. 100 000 s'écrit 1,00,000 et s'appelle un lakh (10⁵). 10 000 000 s'écrit 1,00,00,000 et s'appelle un crore (10⁷). Intl.NumberFormat('en-IN').format(12345678) retourne 1,23,45,678. Le système s'étend à arab (10⁹) et kharab (10¹¹) bien que ceux-ci soient rares en usage moderne.
Quelle taille de nombre cet outil peut-il gérer?
Jusqu'à Number.MAX_SAFE_INTEGER = 2⁵³ − 1 = 9 007 199 254 740 991, tout entier survit à un aller-retour exactement. Au-delà, la précision commence à fuir. JSON.parse("9007199254740993") retourne 9007199254740992, le double représentable le plus proche. Pour des valeurs plus grandes, collez-les comme littéraux BigInt (avec un n final) ou traitez-les comme des chaînes. Le formateur accepte les deux.
Mon nombre est-il envoyé quelque part?
Non. Intl.NumberFormat et les données de locale sont livrés avec votre navigateur; tout le pipeline s'exécute localement. Ouvrez l'onglet Réseau dans DevTools et formatez un nombre, vous verrez zéro requête sortante. Sûr pour les salaires, le chiffre d'affaires, les soldes de compte, ou toute donnée que vous ne colleriez pas dans un service hébergé.