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?

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; // Unterstrich-Trennzeichen in numerischen Literalen sind ebenfalls seit C# 7.0 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 assoziiert ist, z.B. wenn es sich um "en-US" handelt, wird es ein '$'-Zeichen 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 (beispielsweise in einer Trace- oder Protokollmeldung), funktioniert der folgende Code und hat den zusätzlichen Vorteil, dem nächsten Menschen, 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 String-Interpolation anstelle von String.Format

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

oder Verwendung Ihrer Variablen

 double yourVariable = 12456.0;
 $"{yourVariable:n0}"; 
 $"{yourVariable: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));

Output 19,950,000

0 Stimmen

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

11voto

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

3 Stimmen

Oder Console.WriteLine("{0:#,#}", num); Wenn du es nur drucken möchtest. Aber string.Format(...) ist wohl 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