Ich möchte für eine Zahl ein Komma in Tausenderstellen setzen. String.Format()
?
String.Format("{0:n}", 1234); // Output: 1,234.00
String.Format("{0:n0}", 9876); // No digits after the decimal point. Output: 9,876
Ich fand das der einfachste Weg:
myInteger.ToString("N0")
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
Wenn Sie kulturspezifisch sein möchten, können Sie Folgendes versuchen:
(19950000.0).ToString("N",new CultureInfo("en-US"))
= 19.950.000,00
(19950000.0).ToString("N",new CultureInfo("is-IS"))
= 19.950.000,00
Hinweis: Einige Kulturen verwenden ,
, um Dezimalzahlen anstelle von .
zu bedeuten. Seien Sie also vorsichtig.
Standardformate mit ihren zugehörigen Ausgaben,
Console.WriteLine("Standard Numeric Format Specifiers");
String s = String.Format("(C) Currency: . . . . . . . . {0:C}\n" +
"(D) Decimal:. . . . . . . . . {0:D}\n" +
"(E) Scientific: . . . . . . . {1:E}\n" +
"(F) Fixed point:. . . . . . . {1:F}\n" +
"(G) General:. . . . . . . . . {0:G}\n" +
" (default):. . . . . . . . {0} (default = 'G')\n" +
"(N) Number: . . . . . . . . . {0:N}\n" +
"(P) Percent:. . . . . . . . . {1:P}\n" +
"(R) Round-trip: . . . . . . . {1:R}\n" +
"(X) Hexadecimal:. . . . . . . {0:X}\n",
- 1234, -1234.565F);
Console.WriteLine(s);
Beispielausgabe (en-us culture):
(C) Currency: . . . . . . . . ($1,234.00)
(D) Decimal:. . . . . . . . . -1234
(E) Scientific: . . . . . . . -1.234565E+003
(F) Fixed point:. . . . . . . -1234.57
(G) General:. . . . . . . . . -1234
(default):. . . . . . . . -1234 (default = 'G')
(N) Number: . . . . . . . . . -1,234.00
(P) Percent:. . . . . . . . . -123,456.50 %
(R) Round-trip: . . . . . . . -1234.565
(X) Hexadecimal:. . . . . . . FFFFFB2E
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 - some of the formats above fail here.
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
String.Format("{0:#,###,###.##}", MyNumber)
Dadurch erhalten Sie an den relevanten Stellen Kommas.
Die am meisten gewählte Antwort war großartig und seit etwa 7 Jahren hilfreich. Mit der Einführung von C # 6.0 und speziell der String-Interpolation gibt es einen einfacheren und IMO sichereren Weg, um das zu tun, was nachgefragt wurde to add commas in thousands place for a number
:
var i = 5222000;
var s = $"{i:n} is the number"; // results to > 5,222,000.00 is the number
s = $"{i:n0} has no decimal"; // results to > 5,222,000 has no decimal
Wo die Variable i
anstelle des Platzhalters gesetzt wird (d. H. {0}
). Es ist also nicht nötig, sich zu merken, welches Objekt in welche Position geht. Die Formatierung (d. H. :n
) hat sich nicht geändert. Um eine vollständige Übersicht über die Neuerungen zu erhalten, können Sie diese Seite aufrufen .
ganz einfach wie folgt:
float num = 23658; // for example
num = num.ToString("N0"); // Returns 23,658
mehr Infos in Hier
Wenn Sie ein "," Trennzeichen unabhängig von der Kultur erzwingen möchten (zum Beispiel in einer Ablaufverfolgungs- oder Protokollnachricht), funktioniert der folgende Code und hat den zusätzlichen Vorteil, dass der nächste Typ, der darüber stolpert, genau sagt, was Sie tun.
int integerValue = 19400320;
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);
formatiert auf "19.400.320"
Im folgenden Beispiel werden mehrere Werte angezeigt, die mithilfe von benutzerdefinierten Formatzeichenfolgen formatiert werden, die keine 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"
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));
Zum Beispiel gibt String.Format("{0:0,0}", 1);
01 zurück, für mich ist es nicht gültig
Das funktioniert für mich
19950000.ToString("#,#", CultureInfo.InvariantCulture));
ausgabe 19,950,000
Beachten Sie, dass der Wert, den Sie formatieren, numerisch sein soll . Es sieht nicht so aus, als würde eine Zahl eine Zahl darstellen, und das Format wird mit Kommas angegeben.
Einfacher, String-Interpolation anstelle von String.Format
$"{12456:n0}"; // 12,456
$"{12456:n2}"; // 12,456.00
oder mit yourVariable
double yourVariable = 12456.0;
$"{yourVariable:n0}";
$"{yourVariable:n2}";
String.Format("0,###.###"); also works with decimal places
Mit einer solchen Funktion können Sie Zahlen formatieren und optional die gewünschten Dezimalstellen übergeben. Wenn keine Dezimalstellen angegeben sind, werden zwei Dezimalstellen verwendet.
public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
{
return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
}
Ich verwende dezimal, aber Sie können den Typ in einen anderen ändern oder ein anonymes Objekt verwenden. Sie können auch eine Fehlerprüfung für negative Dezimalstellenwerte hinzufügen.
C # 7.1 (vielleicht früher?) Macht dies mit der String-Interpolation so einfach und schön, wie es sein sollte
var jackpot = 1000000;
var niceNumberString = $"Jackpot is {jackpot:n}";
var niceMoneyString = $"Jackpot is {jackpot:C}";