Ich versuche, Zahlen in der Form 123456 in 123.456 zu konvertieren, die ich einfach genug finde, indem ich die .NET ToString()-Methode mit einem benutzerdefinierten Format von N0.
In einem Fall von Daten erhalte ich jedoch bei Verwendung dieser Methode seltsame Formate.
In diesem Fall generiere ich dynamisch eine DataTable für meine Eingabetabelle, um den Code zu testen.
DataTable dt = new DataTable();
dt.Columns.Add("Cases", typeof(Int32));
Meine Daten sehen zum Beispiel so aus, bevor sie formatiert werden.
\--------------------------------------------
| Cases | 2495 | 3937 | 3207 | 4173 | 4265 |
--------------------------------------------
Ich möchte, dass es so aussieht.
\-------------------------------------------------
| Cases | 2,495 | 3,937 | 3,207 | 4,173 | 4,265 |
-------------------------------------------------
Ich versuche, sie mit einem Code wie diesem zu formatieren.
output.Rows[r][c] = Convert.ToInt32(input.Rows[c - 1][r + 1]).ToString("N0");
(Hinweis: Der Grund für die seltsame Formatierung ist, dass ich eine DataTable nehme und sie in eine andere DataTable transponiere).
Mit der obigen Formatierung erhalte ich nun die folgenden Daten zurück.
\--------------------------------------------------------------------------
| Cases | 01/02/0495 | 01/03/0937 | 01/03/0207 | 01/04/0173 | 01/04/0265 |
--------------------------------------------------------------------------
Dann habe ich es mit einem Dezimalpunkt versucht:
output.Rows[r][c] = Convert.ToInt32(input.Rows[c - 1][r + 1]).ToString("N01");
Dies führte zu folgendem Ergebnis.
\------------------------------------------------------
| Cases | 2495.0 | 3937.0 | 3207.0 | 4173.0 | 4265.0 |
------------------------------------------------------
Das hat mich jetzt verwirrt, weil es die Tatsache akzeptiert, dass die Zahl auf diese Weise formatiert werden kann.
Als Nächstes habe ich verschiedene Möglichkeiten der Formatierung von Zeichenketten ausprobiert, etwa so.
output.Rows[r][c] = string.Format("{0:N0}", input.Rows[c - 1][r + 1]);
output.Rows[r][c] = Convert.ToInt32(input.Rows[c - 1][r + 1]).ToString("#,##0");
Keiner von ihnen gibt das Zahlenformat so wieder, wie ich es gerne hätte. Kann mir jemand sagen, was ich falsch mache? Ist es so einfach, dass ich den Punkt übersehen habe?