1049 Stimmen

.NET String.Format() zur Hinzufügung von Kommata am Tausenderplatz für eine Zahl

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

Wäre String.Format() der richtige Ansatz? 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 und Kommas als Dezimaltrennzeichen möchte?

0 Stimmen

Upgevotet, weil es nicht 12.314,0 (wie das n1-Format) 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 sauberere und meiner Meinung nach sicherere Möglichkeit, das zu tun, was gefragt wurde, um Kommas an Tausenderstellen für eine Zahl hinzuzufügen:

var i = 5222000;
var s = $"{i:n} ist die Zahl"; // ergibt > 5.222.000,00 ist die Zahl
s = $"{i:n0} hat keine Dezimalstelle"; // ergibt > 5.222.000 hat keine Dezimalstelle

Wo die Variable i anstelle des Platzhalters eingefügt wird (d.h. {0}). Es ist also nicht erforderlich, sich daran zu erinnern, welches Objekt an welche Position kommt. Das Formatieren (d.h. :n) hat sich nicht geändert. Für eine vollständige Liste der neuen Funktionen können Sie diese Seite besuchen.

41voto

amdev Punkte 5272

Nur so einfach wie das hier:

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 wird dir Kommas an den relevanten Stellen geben.

11 Stimmen

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

15 Stimmen

Dies ist zwar wahr, aber es ist nicht garantiert, dass Sie Kommas am Tausenderpunkt erhalten, da es die Lokalisierung des Benutzers respektiert.

2 Stimmen

Genau das gleiche bei dir: Das ist wahr, aber es ist nicht garantiert, dass der Standort des Benutzers respektiert wird, da Kommata als Tausender-Trennzeichen verwendet werden. (Als Beispiel wird in Portugal das Komma stattdessen als Dezimaltrennzeichen verwendet.)

24voto

Yitzhak Weinberg Punkte 1928

Das folgende Beispiel zeigt mehrere Werte, die mit benutzerdefinierten Formatzeichenfolgen formatiert sind, die Nullplatzhalter 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 die Region / Kultur?

0 Stimmen

@MaartenBodewes Ich dachte, es gibt entsprechenden Buchstaben wie "N1", "F1" oder so etwas =) Aber eine Ä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