Antworten:
String.Format("{0:n}", 1234); // Output: 1,234.00
String.Format("{0:n0}", 9876); // No digits after the decimal point. Output: 9,876
string.Format("{0:n0}", Double.Parse(yourValue));
Ich fand das der einfachste Weg:
myInteger.ToString("N0")
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
,
als ein Tausendertrennzeichen, zum Beispiel ein Leerzeichen oder sogar .
.
.
), ersetzt .NET das Komma automatisch durch dieses Trennzeichen. Ich fordere Sie erneut auf, den von Roger geposteten Link zu lesen, wenn Sie immer noch nicht verstehen, warum dies so ist.
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-Kultur):
(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 entsprechenden Stellen Kommas.
Die am häufigsten 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 eine übersichtlichere und, IMO sicherer, Möglichkeit, das zu tun, was gefragt 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 (dh {0}
). Sie müssen sich also nicht merken, welches Objekt zu welcher Position gehört. Die Formatierung (dh :n
) hat sich nicht geändert. Auf dieser Seite finden Sie eine vollständige Beschreibung der neuen Funktionen .
Wenn Sie ein "," -Trennzeichen unabhängig von der Kultur erzwingen möchten (z. B. in einer Ablaufverfolgungs- oder Protokollnachricht), funktioniert der folgende Code und hat den zusätzlichen Vorteil, dass Sie dem nächsten Benutzer genau mitteilen, was Sie tun.
int integerValue = 19400320;
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);
Sätze 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));
Beachten Sie, dass der Wert, den Sie formatieren, numerisch sein sollte. Es sieht nicht so aus, als würde eine Zeichenfolgendarstellung einer Zahl benötigt, und das Format ist mit Kommas.
String.Format("0,###.###"); also works with decimal places
C # 7.1 (vielleicht früher?) Macht dies mit String-Interpolation so einfach und gut aussehend, wie es sein sollte:
var jackpot = 1000000;
var niceNumberString = $"Jackpot is {jackpot:n}";
var niceMoneyString = $"Jackpot is {jackpot:C}";
Mit einer solchen Funktion können Sie Zahlen formatieren und optional die gewünschten Dezimalstellen übergeben. Wenn keine Dezimalstellen angegeben werden, werden zwei Dezimalstellen verwendet.
public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
{
return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
}
Ich verwende Dezimalzahlen, 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.
Die Methode, mit der ich mich nicht mehr um Kulturen und mögliche Formatierungsprobleme gekümmert habe, besteht darin, dass ich sie als Währung formatiert und anschließend das Währungssymbol entfernt habe.
if (decimal.TryParse(tblCell, out result))
{
formattedValue = result.ToString("C").Substring(1);
}
fr-FR
) platziert oder mehr als ein Zeichen zur Bezeichnung der Währung verwendet (z. B. da-DK
) oder Tausende nicht durch Kommas trennt (z. B. die meisten) vom europäischen Festland).
Unten ist eine gute Lösung in Java!
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(n));
oder für eine robustere Methode möchten Sie möglicherweise das Gebietsschema eines bestimmten Ortes abrufen und dann wie folgt verwenden:
int n=9999999;
Locale locale = new Locale("en", "US");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(n));
US- Gebietsschema AUSGABE: 9.999.999,00 USD
Deutsche Gebietsschemaausgabe
Locale locale = new Locale("de", "DE");
AUSGABE: 9.999.999,00 €
Ausgabe des indischen Gebietsschemas
Locale locale = new Locale("de", "DE");
AUSGABE: Rs.9.999.999,00
Ausgabe des estnischen Gebietsschemas
Locale locale = new Locale("et", "EE");
AUSGABE: 9 999 999 €
Wie Sie in verschiedenen Ausgaben sehen können, müssen Sie sich keine Sorgen machen, dass das Trennzeichen ein Komma oder ein Punkt oder sogar ein Leerzeichen ist. Sie können die Zahl gemäß den i18n-Standards formatieren lassen
locale
?
Wenn Sie es in DataGridview anzeigen möchten, sollten Sie seinen Typ ändern, da der Standardwert String ist und da Sie ihn in eine Dezimalzahl ändern, wird er als Zahl mit Gleitkomma betrachtet
Dim dt As DataTable = New DataTable
dt.Columns.Add("col1", GetType(Decimal))
dt.Rows.Add(1)
dt.Rows.Add(10)
dt.Rows.Add(2)
DataGridView1.DataSource = dt
String.Format("{0:#,##0}", 1234);
funktioniert auch ohne Dezimalstellen.