web-dev-qa-db-fra.com

Comment insérer un séparateur de milliers (virgule) avec convert to double

J'essaie de formater le contenu d'une zone de texte:

this.lblSearchResults1.Text =
    Convert.ToDouble(lblSearchResults1.Text).ToString(); 

Comment puis-je modifier cela afin que le texte inclue des séparateurs virgule/millier?

c'est-à-dire 1 000 au lieu de 1 000.

40
Ricardo Deano

Pour un contrôle personnalisé complet, utilisez ... .ToString("#,##0.00") ou ses variantes. Les . et , seront remplacés par des symboles dépendant de la culture. Dans la plupart des pays européens, vous obtenez 1.234,56.
Une autre image utile est 0.0#.

Pour utiliser un modèle en fonction de la culture des utilisateurs (ou d'une culture sélectionnée), utilisez Le spécificateur de format numérique ("N") , comme dans .ToString("N") ou "... {0:N}".

50
Henk Holterman

En regardant les chaînes de format numérique standard :

Vous pouvez très facilement utiliser 'N' qui fera le bon choix en fonction de la culture de l'utilisateur, vous pouvez donc simplement ajouter «N» en tant que paramètre à la chaîne

([double]12345.67).ToString("N")

12.345.67

68
James Manning

Si vous regardez de plus près Chaînes de format numérique standard vous pouvez essayer l’une des méthodes suivantes:

.ToString("n", CultureInfo.GetCultureInfo("en-US"))
.ToString("n", CultureInfo.GetCultureInfo("de-DE"))
.ToString("n", CultureInfo.CurrentCulture)
5
Oliver

Une alternative aux réponses mentionnées ci-dessus serait d'utiliser 

this.lblSearchResults1.Text = String.Format("{0:N}", Convert.ToDouble(lblSearchResults1.Text))

Si vous vouliez des décimales, entrez simplement le nombre de décimales que vous souhaitez avoir après le N. L'exemple suivant renverra la valeur avec 2 décimales.

this.lblSearchResults1.Text = String.Format("{0:N2}", Convert.ToDouble(lblSearchResults1.Text))

Voir http://msdn.Microsoft.com/en-us/library/system.string.format.aspx pour plus d'informations.

5
Duu82

La façon la plus simple de le faire serait quelque chose comme:

Convert.ToDouble("1234567.12345").ToString("N")

Si vous souhaitez contrôler les décimales, vous pouvez effectuer les opérations suivantes:

Convert.ToDouble("1234567.12345").ToString("N3")

En général, examinez les surcharges sur ToString pour des possibilités plus intéressantes.

0
Chris