it-swarm.com.de

.NET String.Format (), um Kommas an Tausenden von Stellen für eine Zahl hinzuzufügen

Ich möchte für eine Zahl ein Komma in Tausenderstellen setzen. String.Format()?

744
Seibar
String.Format("{0:n}", 1234);  // Output: 1,234.00
String.Format("{0:n0}", 9876); // No digits after the decimal point. Output: 9,876
1038
Seibar

Ich fand das der einfachste Weg:

myInteger.ToString("N0")
321
alchemical
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
134
Ope Adeoye

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.

91
prabir

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
67
CoderTao

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
36
Dennis
String.Format("{0:#,###,###.##}", MyNumber)

Dadurch erhalten Sie an den relevanten Stellen Kommas.

31

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 .

27
von v.

ganz einfach wie folgt: 

float num = 23658; // for example 
num = num.ToString("N0"); // Returns 23,658

mehr Infos in Hier

20
a_m_dev

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"

20
Ravi Desai

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"

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

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

9
cmujica

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.

8
gjc

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}"; 
7
brakeroo
String.Format("0,###.###"); also works with decimal places
4

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.

3
dunwan

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}";
0
Mark Zhukovsky