.NETZ-String.Format() zum hinzufügen von Kommas in der Tausende Ort für eine Reihe
Möchte ich hinzufügen, dass ein Komma in der Tausende Ort für eine Zahl. String.Format()
?
InformationsquelleAutor Seibar | 2008-09-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
String.Format("{0:#,##0}", 1234);
funktioniert auch mit keinen Dezimalstellen.Wie kann ich replizieren Sie die "N" - Bezeichner, aber mit so vielen Dezimalstellen, wie Sie sind, präsentieren Sie in der Reihe?
Nach msdn.microsoft.com/en-us/library/0c899ak8.aspx', ' (und der '.') ersetzt werden mit der richtigen lokalisierten Zeichen.
Ich wusste nicht, dass
dann sind Sie wahrscheinlich die übergabe eines Zeichenfolge statt Zahl. Wenn Sie eine Zeichenfolge, müssen Sie zuerst konvertieren von float-oder double. Versuchen
string.Format("{0:n0}", Double.Parse(yourValue));
InformationsquelleAutor Seibar
Ich fand, dass dies der einfachste Weg:
sollte es nicht myInteger.ToString("N0") ... string.tostring glaube ich nicht funktionieren würde.
Ich weiß, es ist schon 5 Jahre jetzt, aber danke! Es funktioniert für zahlen - > 4 Zeichen, und < 4 Zeichen.
Gut, es funktioniert auch für die 4 Zeichen.. Könnte genauso gut sagen, es funktioniert bei jeder Länge.
Dies funktioniert, aber es verändert sich auf regionale Einstellungen
InformationsquelleAutor alchemical
,
als Tausender-Trennzeichen, z.B. ein Leerzeichen oder sogar.
.Funktioniert Dank + 1. Haben so erweitert, zeigt bis zum 2.d.p. Anzahl.ToString("#,##0.##")
Es ist eigentlich nicht wahr, siehe Roger Lipscombe ' s Kommentar zu der Antwort oben: String.Format gelten Lokalisierung automatisch.
Das schöne dabei ist, dieser code ist nicht immer drucken Sie ein Komma. Nur wenn die Kultur ist eine, die erwartet, dass Kommas (z.B. de-de oder invariant). Wenn die Kultur ist eine, die erwartet, dass ein anderes Trennzeichen (z.B.
.
), .NET wird automatisch ersetzen Sie das Komma mit separator. Wieder, ich fordere Sie auf, Lesen Sie die link-geschrieben von Roger wenn Sie immer noch nicht verstehen, warum das so ist.Justin ' s Kommentar ist immer noch richtig, dass, wenn Sie nicht ausdrücklich Kraft der Kultur en-US erbt Kultur Einstellungen von der lokalen Maschine. Mein Verständnis ist, dass das kompilieren der code von oben, dann läuft es auf zwei Rechnern mit verschiedenen Kulturen (mit unterschiedlicher Anzahl Separatoren) würde zu unterschiedlichen Ergebnissen führen. Wenn Sie wollen, dass es immer produziert ein Komma, müssen Sie explizit festlegen, eine Kultur, wird ein Komma (z.B. Invarianten).
InformationsquelleAutor
Wenn Sie möchten, kulturspezifische, möchten Sie vielleicht versuchen, diese:
(19950000.0).ToString("N",new CultureInfo("en-US"))
= 19,950,000.00(19950000.0).ToString("N",new CultureInfo("is-IS"))
= 19.950.000,00Hinweis: Einige Kulturen verwenden
,
bedeutet dezimal anstatt.
so vorsichtig sein.InformationsquelleAutor prabir
Standard-Formate, mit deren zugehörige Ausgänge,
Beispiel für die Ausgabe (en-us):
InformationsquelleAutor CoderTao
Dies ist das beste format. Funktioniert in allen diesen Fällen:
sollte funktionieren
von Ihnen positiv bewertet werden, weil es nicht angezeigt wird 12,314.0 (wie die n1-format), aber 12,314 🙂
InformationsquelleAutor Dennis
Werden, die Ihnen die Kommas an den relevanten stellen.
Das ist wahr, aber es ist nicht garantiert, um Ihnen die Kommas an die tausend Punkt, weil es Respekt für das Gebietsschema des Benutzers.
rechts auf Sie zurück: das ist wahr, aber es ist nicht garantiert, um Respekt für das Gebietsschema des Benutzers, weil es verwendet Kommas als Tausender-Trennzeichen. (Als ein Beispiel, in Portugal wird das Komma anstelle der dezimal-separator.)
Wenn Sie erzwingen möchten Werte nach . ersetzen Sie die # 0. msdn.microsoft.com/en-us/library/0c899ak8(v=vs. 110).aspx: Null ersetzt die null mit der entsprechenden Ziffer, wenn vorhanden; sonst null erscheint in der Ergebnis-string in der Erwägung, dass das symbol "#" ersetzt durch die entsprechende Ziffer, sofern vorhanden; andernfalls wird keine Ziffer erscheint in der Ergebnis-string.
diese Methode funktionierte ok für meine Anforderung, die msdn-Seite über die Int32.ToString-Methode, wäre eine primäre Ort, es würde verwendet werden, msdn.microsoft.com/en-us/library/8wch342y.aspx ist nicht sehr hilfreich für diese spezielle Anwendung entweder
InformationsquelleAutor Stephen Wrighton
Der am meisten gewählte Antwort war toll und hilfreich war für über 7 Jahre. Mit der Einführung von C# 6.0 und insbesondere die String-Interpolation es ist ein ordentlicher und IMO sicherer Weg, um zu tun, was wurde gefragt
to add commas in thousands place for a number
:Wo die variable
i
ist, setzen Sie anstelle des Platzhalters (also{0}
). So gibt es keine Notwendigkeit zu erinnern, welches Objekt es geht um die position. Die Formatierung (d.h.:n
) hat sich nicht verändert. Für eine vollständige feature, was neu ist, können Sie gehen Sie zu dieser Seite.InformationsquelleAutor von v.
Wenn Sie möchten, um zu erzwingen,", " separator unabhängig von der Kultur (zum Beispiel in einer trace-oder log-Meldung), der folgende code funktioniert und hat den zusätzlichen Vorteil, zu sagen, die nächsten Kerl, der stolpert über Sie, was genau Sie tun.
setzt formatiert "19,400,320"
InformationsquelleAutor Ravi Desai
nur einfach:
Infos Hier
InformationsquelleAutor a_m_dev
Im folgenden Beispiel werden mehrere Werte, die formatiert sind, verwenden von benutzerdefinierten Formatzeichenfolgen, die null enthalten Platzhalter.
Oder
Ergebnis "29,255.0"
Oder
Ergebnis "29,255.00"
InformationsquelleAutor Yitzhak Weinberg
InformationsquelleAutor p.campbell
Beispielsweise
String.Format("{0:0,0}", 1);
01 gibt, ist für mich nicht gültigDies funktioniert für mich
Ausgabe
19,950,000
InformationsquelleAutor cmujica
Beachten Sie, dass der Wert, den Sie formatieren sollte numerisch sein.
Es sieht nicht wie es wird eine string-Darstellung einer Zahl und format mit Kommas.
InformationsquelleAutor
Einfacher, mit string-interpolation anstelle von String.Format
oder mit yourVariable
InformationsquelleAutor brakeroo
Können Sie eine Funktion verwenden, wie das formatieren von zahlen und Optional pass in der gewünschten Dezimalstellen. Wenn Dezimalstellen nicht angegeben wird, verwenden Sie zwei Dezimalstellen.
Ich die decimal aber Sie können ändern Sie den Typ auf eine andere oder eine anonyme Objekt. Man könnte auch hinzufügen, Fehlerüberprüfung für negative dezimale Werte.
InformationsquelleAutor dunwan
InformationsquelleAutor Abolfazl Rastgou
C# 7.1 (vielleicht früher?) macht dies so einfach und gut aussehende, wie es sein sollte, mit der string-interpolation:
InformationsquelleAutor Mark Zhukovsky
Die Methode, die ich verwendet, um sich keine sorgen mehr über Kulturen und potenzielle Probleme mit der Formatierung ist, dass ich es formatiert als Währung und nahm das symbol der Währung hinterher.
if (decimal.TryParse(tblCell, out result))
fr-FR
), oder er verwendet mehr als ein Zeichen für die Bezeichnung der Währung (z.B.da-DK
), oder nicht Tausendertrennzeichen ein Komma (z.B. die meisten Festland-Europa).InformationsquelleAutor 8 John Volante
Unten ist eine gute Lösung in Java aber!
oder für eine robustere Art und Weise Sie wollen sich das Gebietsschema einer bestimmten Stelle, dann verwenden Sie wie folgt:
UNS Locale AUSGABE: $9,999,999.00
Deutschen Locale Ausgabe
AUSGABE: 9.999.999,00 €
Indischen Locale Ausgabe
AUSGABE: Rs.9,999,999.00
Estnischen Locale Ausgabe
AUSGABE: 9 999 999 €
Wie Sie sehen können, in verschiedenen Ausgaben, die Sie nicht haben, um sorgen über den separator wird eine Komma oder dot oder sogar Raum können Sie die Nummer Format nach der i18n standards
locale
??gut richtig entdeckt, ist es in der Tat verwendet werden, während sich die Währung Instanz wie: NumberFormat Format = NumberFormat.getCurrencyInstance(locale); korrigiert den code, danke!
Haben Sie überprüft, die tags? Die Frage ist C# nicht Java!
InformationsquelleAutor Anirudh
Wenn Sie wollen, um es in DataGridview , sollten Sie den Typ ändern , denn default ist String, und da du es ändern-zu-dezimal-Auffassung als Zahl mit Gleitkomma -
InformationsquelleAutor Ali