1049 Stimmen

.NET String.Format() um Kommas an tausendstel Stelle für eine Zahl hinzuzufügen

Ich möchte ein Komma an der Tausenderstelle für eine Zahl hinzufügen.

Würde String.Format() der richtige Weg sein? Welches Format würde ich verwenden?

63voto

Dennis Punkte 665

Dies ist das beste Format. Funktioniert in all diesen Fällen:

String.Format( "{0:#,##0.##}", 0 ); // 0
String.Format( "{0:#,##0.##}", 0.5 ); // 0.5 - einige der oben genannten Formate scheitern hier.
String.Format( "{0:#,##0.##}", 12314 ); // 12,314
String.Format( "{0:#,##0.##}", 12314.23123 ); // 12,314.23
String.Format( "{0:#,##0.##}", 12314.2 ); // 12,314.2
String.Format( "{0:#,##0.##}", 1231412314.2 ); // 1,231,412,314.2

1 Stimmen

Was ist, wenn ich Punkte als Tausendertrennzeichen haben möchte und ein Komma als Dezimaltrennzeichen?

0 Stimmen

Hochgewertet, weil es nicht 12.314,0 (wie im Format n1) anzeigt, sondern 12.314 :)

47voto

von v. Punkte 16208

Die am meisten gewählte Antwort war großartig und hat etwa 7 Jahre lang geholfen. Mit der Einführung von C# 6.0 und speziell der String-Interpolation gibt es eine ordentlichere und meiner Meinung nach sicherere Möglichkeit, das zu tun, was gefragt wurde , um Kommata an Tausenden Stellen für eine Zahl hinzuzufügen:

var i = 5222000;
var s = $"{i:n} is the number"; // führt zu > 5.222.000,00 ist die Nummer
s = $"{i:n0} hat keine Dezimalstellen"; // führt zu > 5.222.000 hat keine Dezimalstellen

Wo die Variable i anstelle des Platzhalters (d.h. {0}) platziert wird. So muss man sich nicht merken, welches Objekt an welche Position gehört. Das Formatieren (d.h. :n) hat sich nicht geändert. Für eine vollständige Übersicht über die neuen Funktionen können Sie zu dieser Seite gehen.

41voto

amdev Punkte 5272

Nur so einfach:

float num = 23658; // zum Beispiel 
num = num.ToString("N0"); // Gibt 23.658 zurück

mehr Informationen findest du Hier

36voto

Stephen Wrighton Punkte 34868
String.Format("{0:#,###,###.##}", MyNumber)

Das gibt Ihnen Kommata an den relevanten Stellen.

11 Stimmen

Die Methode ":n" ist besser, da sie die Locale des Benutzers respektieren sollte.

15 Stimmen

Das ist zwar richtig, aber es ist nicht garantiert, dass Sie bei der Tausenderangabe Kommas erhalten, da es die Lokalisierung des Benutzers respektiert.

2 Stimmen

Genau dasselbe: das ist wahr, aber es ist nicht garantiert, dass es die Benutzerlokalität respektiert, da es Kommata als Tausendertrennzeichen verwendet. (Beispielsweise ist in Portugal das Komma stattdessen der Dezimaltrennzeichen.)

24voto

Yitzhak Weinberg Punkte 1928

Das folgende Beispiel zeigt mehrere Werte, die mit benutzerdefinierten Formatzeichenfolgen formatiert sind, die Null-Platzhalter enthalten.

String.Format("{0:N1}", 29255.0);

Oder

29255.0.ToString("N1")

Ergebnis "29.255,0"

String.Format("{0:N2}", 29255.0);

Oder

29255.0.ToString("N2")

Ergebnis "29.255,00"

0 Stimmen

Schöne Antwort, aber was ist mit 29.255,00?

0 Stimmen

@Roxy'Pro Ändern Sie das Gebiet/Sprache?

0 Stimmen

@MaartenBodewes Ich dachte, es gibt einen entsprechenden Buchstaben wie "N1", "F1" oder so etwas =) Aber die Änderung der Kultur würde definitiv funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X