2009-10-19 22 views
14

Ich habe eine Dezimalzahl, sagen 1234.500.Komma Tausender Trennzeichen zu Dezimal (.net) hinzufügen

Ich will es an dem 1,234.4 Anzeige zur Zeit

Im es zu einem doppelten Umwandlung des Hinter ‚0'en zu entfernen.

string.Format ("{0: 0,0}", 1234.500) entfernt die Dezimalstelle, und andere Formatierungsoptionen scheinen trotzdem zwei Dezimalstellen zu verwenden.

Kann jemand Einblick bieten?

+0

bearbeiten, nur zur Klarstellung 1234,560, i 1.234,56 erwarten würde – maxp

+0

Sie wollen es als 1.234 Anzeigen *. * 5 ** richtig? Bearbeiten Sie den Beitrag, um das zu reflektieren. – Amarghosh

+0

Möchten Sie lokale Systemeinstellungen verwenden oder die Anwendung erzwingen, um sie auf diese Weise zu formatieren? –

Antwort

18

Sie sollten 1,234.50 eine benutzerdefinierte Formatierung wie #,##0.00

string s = string.Format("{0:#,##0.00}", xx); 

produzieren verwenden, wenn xx = 1234.5M
über das Konvertieren zu double vergessen, die nicht wirklich helfen.

+0

Sie möchten keine abschließenden Nullstellen – maxp

+1

Dann entfernen Sie 1 oder mehrere Nullen: #, ## 0. oder mache sie optional: #, ## 0. # –

+0

Danke für die Hilfe. – maxp

0

Haben Sie das versucht?

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

Entfernt keine abschließenden Nullen aus der Dezimalzahl - versuchen Sie String.Format ("{0: 0,0.00}", 1234.5) – maxp

6

Eine weitere Alternative:

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

Sind Sie sich bewusst, dass .NET hat eingebaute Unterstützung für den richtigen Zahlen Formatierung der regionalen Einstellungen der einzelnen Benutzer Ihrer Anwendung entsprechend? Es könnte besser sein, die eigenen regionalen Einstellungen des Benutzers zu nutzen (das .NET-Framework kennt bereits alle richtigen Einstellungen).

Wenn Sie jedoch Ihre Anwendung reparieren möchten, um Zahlen in einer bestimmten regionalen Einstellung zu formatieren, können Sie trotzdem ein bestimmtes Gebietsschema Ihrer Wahl setzen und .NET zwingen, dies als Grundlage für alle Formatierungen zu verwenden (nicht nur Zahlen). :

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

und dann

Thread.CurrentThread.CurrentUICulture = us; 

oder nur

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

Sie sollten sich bewusst sein, dass die Verwendung von Kommas als Tausendertrennzeichen für UK und USA angemessen ist, aber es ist nicht, wie Tausende sollte in anderen Ländern

„1.025 angezeigt als 1.025 angezeigt die United Staaten und 1.025 in Deutschland. In Schweden ist die Tausender-Trennzeichen ein Raum“

MSDN has dedicated section gewidmet dieses Thema, das sie‚Globalisierung‘(dh, dass ein guter Suchbegriff ist, wenn überhaupt müssen Sie genauer jagen) nennen. Diese Seite beschreibt, wie die Verwendung der Pfund-Zeichen funktioniert als Ziffer Platzhalter für das Entfernen der nachfolgenden Nullen (wie von Henk Holterman in einem frühen Kommentar vorgeschlagen).

Siehe auch Custom Numeric Format Strings.

0

versuchen this!

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

Try this:

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

(Ich habe dies gesehen in RDLC berichtet)

Verwandte Themen