Einleitung: Warum Kommas in Zahlen nicht nur Ästhetik sind
\n\nStellen Sie sich vor: Sie zeigen das Gehalt eines Mitarbeiters auf dem Bildschirm an – 1500000 Rubel. Das Auge schweift, Null hängt an Null, und Sie zählen die Stellen dreimal nach. Stellen Sie sich nun 1.500.000 vor – sofortiges Verständnis des Betrags. Der Unterschied ist enorm.
Auf Stack Overflow hat die Frage ".NET String.Format() to add commas in thousands place for a number" Zehntausende von Aufrufen erhalten. Das bedeutet, dass Entwickler auf der ganzen Welt mit derselben Aufgabe kämpfen: Wie formatiert man eine Zahl in C# schön und korrekt mit Tausendertrennzeichen? Heute werden wir alle Ansätze durchgehen – vom klassischen String.Format bis zu den modernen Möglichkeiten von C#.
Wenn Sie in C# programmieren und mit Berichten, Finanzdaten arbeiten oder einfach möchten, dass Ihre Benutzeroberfläche professionell aussieht – dieser Artikel ist für Sie. Los geht's!
\n\nWas ist String.Format() und wozu wird es benötigt?
\n\nString.Format() ist eine statische Methode, die es ermöglicht, Werte von Variablen in eine Vorlagenzeichenfolge mit Formatierungskontrolle einzufügen. Im Gegensatz zur einfachen Verkettung bietet sie Flexibilität: Sie können angeben, wie genau die Zahl angezeigt werden soll – mit Trennzeichen, mit einer festgelegten Anzahl von Dezimalstellen, im Währungsformat und so weiter.
Die Syntax ist einfach: String.Format("{0:N}", number), wobei 0 der Index des Arguments und N der Formatbezeichner ist. Aber der Teufel steckt, wie immer, im Detail.
Die grundlegende Methode: String.Format mit dem Format "N"
\n\nDer einfachste und offensichtlichste Weg, einer Zahl Kommas hinzuzufügen, ist die Verwendung des Formatbezeichners "N" (vom Wort Number). Er fügt automatisch Tausendertrennzeichen hinzu und legt die Anzahl der Dezimalstellen fest (standardmäßig 2).
int number = 1234567;\nstring formatted = String.Format("{0:N}", number);\nConsole.WriteLine(formatted); // Ausgabe: 1,234,567.00\n\n\nWenn Sie keine Dezimalstellen benötigen, geben Sie "N0" an – Null bedeutet „null Nachkommastellen“:
string formatted = String.Format("{0:N0}", number);\nConsole.WriteLine(formatted); // Ausgabe: 1,234,567\n\n\nWichtig: Das Tausendertrennzeichen hängt von der aktuellen Kultur (CultureInfo) ab. In der deutschen Lokalisierung ist dies ein Punkt (1.234.567), in der englischen ein Komma. Wenn Sie unabhängig von den regionalen Einstellungen ein Komma benötigen, lesen Sie weiter.
Alternativen: ToString("N") und Zeichenfolgeninterpolation
\n\nModernes C# bietet elegantere Möglichkeiten. Anstelle von String.Format können Sie die Methode ToString direkt für die Zahl aufrufen:
string formatted = number.ToString("N0");\nConsole.WriteLine(formatted); // 1,234,567\n\n\nUnd wenn Sie C# 6 oder höher verwenden, macht die Zeichenfolgeninterpolation den Code noch lesbarer:
\n\nstring formatted = $"{number:N0}";\nConsole.WriteLine(formatted); // 1,234,567\n\n\nDie Interpolation ist im Grunde dasselbe wie String.Format, aber syntaktisch angenehmer. Sie wird unter der Haube in einen Aufruf von String.Format kompiliert, sodass die Leistung identisch ist.
Feinabstimmung: Benutzerdefinierte Formatbezeichner
\n\nManchmal reicht das integrierte Format "N" nicht aus. Zum Beispiel benötigen Sie:
- \n
- Ein Leerzeichen anstelle eines Kommas \n
- Ein „+“-Zeichen für positive Zahlen \n
- Zahlen nach Breite ausrichten \n
Für solche Fälle gibt es benutzerdefinierte Formatzeichenfolgen. So legen Sie das Tausendertrennzeichen manuell mit dem Symbol # oder 0 fest:
int number = 1234567;\nstring customFormat = "#,##0";\nstring formatted = number.ToString(customFormat);\nConsole.WriteLine(formatted); // 1,234,567\n\n\nLassen Sie uns analysieren, was "#,##0" bedeutet:
- \n
#– optionale Ziffer