J'essaie de ne pas utiliser le caractère "," comme un séparateur de milliers lors de l'affichage d'une chaîne, mais d'utiliser un espace à la place. Je suppose que j'ai besoin de définir une culture personnalisée, mais je ne semble pas avoir raison. Des pointeurs?
par exemple: afficher 1000000 comme 1 000 000 au lieu de 1 000 000
(non, String.Replace()
n'est pas la solution que j'aimerais utiliser: P)
Je vous suggère de trouver un NumberFormatInfo
qui correspond le mieux à ce que vous voulez (c'est-à-dire qu'il est juste à part le séparateur des milliers), appelez Clone()
= dessus, puis définissez la propriété NumberGroupSeparator
. (Si vous souhaitez formater les nombres en utilisant des formats monétaires, vous devez remplacer CurrencyGroupSeparator
à la place/également.) Utilisez-les comme informations de format pour vos appels vers string.Format
etc, et ça devrait aller. Par exemple:
using System;
using System.Globalization;
class Test
{
static void Main()
{
NumberFormatInfo nfi = (NumberFormatInfo)
CultureInfo.InvariantCulture.NumberFormat.Clone();
nfi.NumberGroupSeparator = " ";
Console.WriteLine(12345.ToString("n", nfi)); // 12 345.00
}
}
Créez votre propre NumberFormatInfo (dérivé) avec un séparateur de milliers différent.
Il existe une version légèrement plus simple de Jon Skeet:
using System;
using System.Globalization;
class Test
{
static void Main()
{
NumberFormatInfo nfi = new NumberFormatInfo {NumberGroupSeparator = " ", NumberDecimalDigits = 0};
Console.WriteLine(12345678.ToString("n", nfi)); // 12 345 678
}
}
Et l'initialisation 'nfi' pourrait être ignorée et placée directement comme paramètre dans la méthode ToString ().
Manière la plus simple ...
num.ToString("### ### ### ### ##0.00")