Comment formater les nombres avec des séparateurs de milliers en C# : guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi les virgules dans les nombres ne sont pas qu'une question d'esthétique

\n\n

Imaginez : vous affichez le salaire d'un employé à l'écran — 1500000 roubles. L'œil s'égare, les zéros s'accumulent, et vous recomptez les rangs trois fois. Imaginez maintenant 1,500,000 — une compréhension instantanée du montant. La différence est colossale.

\n\n

Sur Stack Overflow, la question ".NET String.Format() to add commas in thousands place for a number" a recueilli des dizaines de milliers de vues. Cela signifie que des développeurs du monde entier se heurtent à la même tâche : comment formater joliment et correctement un nombre avec des séparateurs de milliers en C#. Aujourd'hui, nous allons passer en revue toutes les approches — du classique String.Format aux fonctionnalités modernes de C#.

\n\n

Si vous codez en C# et travaillez avec des rapports, des données financières, ou souhaitez simplement que votre interface utilisateur ait l'air professionnelle — cet article est pour vous. C'est parti !

\n\n

Qu'est-ce que String.Format() et à quoi sert-il ?

\n\n

String.Format() est une méthode statique qui permet d'insérer des valeurs de variables dans une chaîne modèle avec un contrôle du formatage. Contrairement à une simple concaténation, elle offre de la flexibilité : vous pouvez spécifier exactement comment afficher le nombre — avec des séparateurs, avec un nombre fixe de décimales, au format monétaire, etc.

\n\n

La syntaxe est simple : String.Format("{0:N}", number), où 0 est l'index de l'argument et N le spécificateur de format. Mais le diable, comme toujours, se cache dans les détails.

\n\n

Méthode principale : String.Format avec le format "N"

\n\n

La façon la plus simple et évidente d'ajouter des virgules à un nombre est d'utiliser le spécificateur de format "N" (pour Number). Il ajoute automatiquement les séparateurs de milliers et définit le nombre de décimales (par défaut, 2).

\n\n
int number = 1234567;\nstring formatted = String.Format("{0:N}", number);\nConsole.WriteLine(formatted); // Sortie : 1,234,567.00\n
\n\n

Si vous n'avez pas besoin de décimales, utilisez "N0" — zéro signifie « zéro décimale » :

\n\n
string formatted = String.Format("{0:N0}", number);\nConsole.WriteLine(formatted); // Sortie : 1,234,567\n
\n\n

Important : le symbole du séparateur de milliers dépend de la culture courante (CultureInfo). Dans la locale russe, ce sera un espace (1 234 567), dans la locale anglaise, une virgule. Si vous avez besoin spécifiquement d'une virgule indépendamment des paramètres régionaux, lisez la suite.

\n\n

Alternatives : ToString("N") et interpolation de chaînes

\n\n

Le C# moderne propose des méthodes plus élégantes. Au lieu de String.Format, vous pouvez appeler directement la méthode ToString sur le nombre :

\n\n
string formatted = number.ToString("N0");\nConsole.WriteLine(formatted); // 1,234,567\n
\n\n

Et si vous utilisez C# 6 ou supérieur, l'interpolation de chaînes rendra le code encore plus lisible :

\n\n
string formatted = $"{number:N0}";\nConsole.WriteLine(formatted); // 1,234,567\n
\n\n

L'interpolation est essentiellement le même String.Format, mais syntaxiquement plus agréable. Elle est compilée en un appel à String.Format sous le capot, donc les performances sont identiques.

\n\n

Réglage fin : spécificateurs de format personnalisés

\n\n

Parfois, le format intégré "N" ne suffit pas. Par exemple, vous avez besoin de :

\n
    \n
  • Utiliser un espace au lieu d'une virgule
  • \n
  • Afficher le signe « + » pour les nombres positifs
  • \n
  • Aligner les nombres sur une largeur
  • \n
\n\n

Pour ces cas, il existe des chaînes de format personnalisées. Voici comment définir manuellement le séparateur de milliers avec le symbole # ou 0 :

\n\n
int number = 1234567;\nstring customFormat = "#,##0";\nstring formatted = number.ToString(customFormat);\nConsole.WriteLine(formatted); // 1,234,567\n
\n\n

Décortiquons ce que signifie "#,##0" :

\n
    \n
  • # — chiffre optionnel

Blogs

Book Recommendations