Ajouter une virgule séparateur de milliers en décimal (.net)
-
22-09-2019 - |
Question
J'ai un nombre décimal, dire 1234,500.
Je veux afficher comme 1,234.5.
Je suis en train de convertir à un double pour enlever la fuite « 0 'de.
string.Format("{0:0,0}",1234.500)
supprime la virgule, et d'autres options de formatage semblent utiliser deux décimales indépendamment.
Quelqu'un peut-il offrir un aperçu?
La solution
Vous devez utiliser une mise en forme personnalisée comme #,##0.00
string s = string.Format("{0:#,##0.00}", xx);
Produira 1,234.50
quand xx = 1234.5M
oublier la conversion à double
, qui ne sera pas vraiment aider.
Autres conseils
Savez-vous que .NET a un support intégré pour le formatage correctement les numéros selon les paramètres régionaux de chaque utilisateur de votre application? Il pourrait être préférable de tirer parti de propres paramètres régionaux de l'utilisateur (le framework .NET connaît tous les bons réglages déjà).
Cependant, si vous voulez fixer votre application aux numéros de format dans un contexte régional particulier, vous pouvez toujours leveage un endroit particulier de votre choix et .NET force pour l'utiliser comme base de la mise en forme (pas seulement des chiffres):
using System.Globalization;
using System.Threading;
...
CultureInfo us = new CultureInfo("en-US");
et
Thread.CurrentThread.CurrentUICulture = us;
ou tout simplement
Console.WriteLine(d.ToString("c", us));
Vous devez être conscient que l'utilisation de virgules comme séparateur de milliers est approprié pour Royaume-Uni et États-Unis, mais il est pas comment dans d'autres pays des milliers doivent être affichés
"1020-5 est affiché comme 1,025 aux États- Unis et 1.025 en Allemagne. En Suède, le séparateur de milliers est un espace "
MSDN a section dédiée consacrée à ce sujet qu'ils appellent ' la mondialisation »(c.-à-qui est un bon terme de recherche si jamais vous avez besoin de traquer plus de détails). Cette page décrit comment l'utilisation du signe dièse fonctionne comme un espace réservé à deux chiffres pour la suppression des zéros de suivi (comme suggéré par Henk Holterman dans un commentaire précédent).
Voir aussi personnalisés Chaînes de format numériques .
Une autre alternative:
decimal d = 1234.56m;
string s = d.ToString("N"); // 1,234.56
Avez-vous essayé?
String.Format("{0:0,0.00}", 1234.560);
essayer!
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Try
TextBox1.Text = Format(CInt(TextBox1.Text), "#,#")
TextBox1.SelectionStart = TextBox1.Text.Length
Catch ex As Exception
End Try
End Sub
Essayez ceci:
string myNumber = string.Format("{0:#,0.00}", 1234.500);
(je l'ai vu dans les rapports de RDLC)