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?

22voto

Mark Z. Punkte 1807

C# 7.0+ macht dies so einfach und schön aussehend, wie es sein sollte, mit String-Interpolation:

var jackpot = 1_000_000; // Trennzeichen in numerischen Literalen seit C# 7.0 ebenfalls verfügbar
var niceNumberString = $"Jackpot beträgt {jackpot:n}"; 
var niceCurrencyString = $"Jackpot beträgt {jackpot:C}";

Console.WriteLine(niceNumberString); // Ausgabe: "Jackpot beträgt 1.000.000,00"
Console.WriteLine(niceCurrencyString); // Ausgabe: "Jackpot beträgt ¤1.000.000,00"

Hinweis: '¤' in der Ausgabe für das Beispiel niceCurrencyString wird das Währungssymbol sein, das mit System.Threading.Thread.CurrentThread.CurrentCulture verbunden ist, z.B. wenn es "en-US" ist, wird es ein '$' sein.

1 Stimmen

Wow das ist wirklich ordentlich und sauber, wusste nicht, dass c# das hat, danke!

0 Stimmen

21voto

Ravi Desai Punkte 451

Wenn Sie unabhängig von der Kultur ein ","-Trennzeichen erzwingen möchten (zum Beispiel in einer Trace- oder Log-Nachricht), funktioniert der folgende Code und hat den zusätzlichen Vorteil, dem nächsten, der darauf stößt, genau zu sagen, was Sie tun.

int integerValue = 19400320; 
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);

setzt formatted auf "19.400.320"

14voto

brakeroo Punkte 1249

Einfacher, Verwendung von Zeichenketteninterpolation anstelle von String.Format

 $"{12456:n0}"; // 12,456
 $"{12456:n2}"; // 12,456.00

oder Verwendung von IhrerVariable

 double IhreVariable = 12456.0;
 $"{IhreVariable:n0}"; 
 $"{IhreVariable:n2}";

11voto

cmujica Punkte 1214

Zum Beispiel String.Format("{0:0,0}", 1); gibt 01 zurück, für mich ist das nicht gültig

Dies funktioniert für mich

19950000.ToString("#,#", CultureInfo.InvariantCulture));

Ausgabe 19,950,000

0 Stimmen

Aber wenn wir den Wert von 19950000 in eine Variable nehmen und so etwas tun var test = "19950000"; test.ToString("#,#", CultureInfo.InvariantCulture)); es funktioniert nicht

11voto

p.campbell Punkte 94960
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));

3 Stimmen

Oder Console.WriteLine("{0:#,#}", num); wenn Sie es einfach ausdrucken möchten. Aber string.Format(...) ist meiner Meinung nach nützlicher.

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