2009-10-19 6 views
14

J'ai un nombre décimal, disons 1234.500.Ajouter un séparateur virgule mille en décimal (.net)

Je veux l'obtenir pour afficher 1,234.4

Im actuellement le convertir en un double pour enlever la fuite « 0 'de. String.Format ("{0: 0,0}", 1234.500) supprime la décimale, et les autres options de formatage semblent utiliser deux décimales indépendamment.

Quelqu'un peut-il offrir un aperçu?

+0

Modifier pour clarifier les choses 1234,560, j'attendre 1,234.56 – maxp

+0

Vous voulez afficher comme * 1,234. * 5 ** pas vrai? Modifier le post pour refléter cela. – Amarghosh

+0

Voulez-vous utiliser les paramètres système locaux ou simplement forcer l'application à la formater de cette façon? –

Répondre

18

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.

+0

Ne voulez pas de zéro à la fin – maxp

+1

Ensuite, supprimez 1 ou plusieurs zéros: #, ## 0. ou les rendre facultatifs: #, ## 0. # –

+0

Merci pour l'aide. – maxp

0

Avez-vous essayé?

String.Format("{0:0,0.00}", 1234.560); 
+0

Ne supprime pas les zéros finaux de la virgule décimale - essayez String.Format ("{0: 0,0.00}", 1234.5) – maxp

6

Une autre alternative:

decimal d = 1234.56m; 
string s = d.ToString("N"); // 1,234.56 
9

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 des propres paramètres régionaux de l'utilisateur (le framework .NET connaît déjà tous les bons paramètres). Cependant, si vous souhaitez corriger votre application pour mettre en forme des nombres dans un paramètre régional particulier, vous pouvez toujours placer un paramètre régional particulier de votre choix et forcer .NET à l'utiliser comme base de tout formatage (pas uniquement des nombres) :

using System.Globalization; 
using System.Threading; 
... 
CultureInfo us = new CultureInfo("en-US"); 

puis

Thread.CurrentThread.CurrentUICulture = us; 

ou tout simplement

Console.WriteLine(d.ToString("c", us)); 

Vous devez savoir que l'utilisation de virgules comme séparateur de milliers est approprié pour Royaume-Uni et États-Unis, mais il est pas comment des milliers doivent être affichés dans d'autres pays

« 1020-5 est affiché comme 1,025 dans États-Unis et 1,025 en Allemagne. En Suède, le séparateur de milliers est un espace »

MSDN has dedicated section consacré à 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 le 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 Custom Numeric Format Strings.

0

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 
0

Essayez ceci:

string myNumber = string.Format("{0:#,0.00}", 1234.500); 

(je l'ai vu dans RDLC rapports)