Frage

Ich versuche Zahlen in Form 123456 bis 123456 zu konvertieren, die ich einfach genug finden, indem den .NET ToString () -Methode mit einem benutzerdefinierten Format von N0 verwendet wird.

Jedoch in einem Fall von Daten Ich erhalte seltsame Formate während dieser Methode.

In diesem Fall bin ich ein Datatable dynamisch für meine Eingabe-Tabelle zu erzeugen, den Code zu testen.

DataTable dt = new DataTable();

dt.Columns.Add("Cases", typeof(Int32));

Zum Beispiel meiner Daten wie folgt aussehen, bevor angewandt formatiert wird.

--------------------------------------------
| Cases | 2495 | 3937 | 3207 | 4173 | 4265 |
--------------------------------------------

Ich mag es so aussehen.

-------------------------------------------------
| Cases | 2,495 | 3,937 | 3,207 | 4,173 | 4,265 |
-------------------------------------------------

Ich versuche Formatierung es mithilfe von Code wie so.

output.Rows[r][c] = Convert.ToInt32(input.Rows[c - 1][r + 1]).ToString("N0");

. (Anmerkung: Der Grund für die seltsame Formatierung ist, weil ich eine Datatable nähme und es an einem anderen Datentabelle zur Umsetzung)

die oben Formatierung verwenden ich nun folgende Daten zurückgegeben.

--------------------------------------------------------------------------
| Cases | 01/02/0495 | 01/03/0937 | 01/03/0207 | 01/04/0173 | 01/04/0265 |
--------------------------------------------------------------------------

Ich versuchte es dann mit einem Dezimalpunkt:

output.Rows[r][c] = Convert.ToInt32(input.Rows[c - 1][r + 1]).ToString("N01");

Was hat mir das folgende Ergebnis.

------------------------------------------------------
| Cases | 2495.0 | 3937.0 | 3207.0 | 4173.0 | 4265.0 |
------------------------------------------------------

Das hat mich jetzt verwirrt, weil es die Tatsache ist, zu akzeptieren, dass die Zahl kann auf diese Weise formatiert werden.

Das nächste, was ich versuchte, waren verschiedene Arten von Strings Formatierung wie 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");

Keine von diesen geben das Zahlenformat, wie ich entweder möchte. Kann jemand raten, wo ich falsch gehe? Ist es so einfach, dass ich den Punkt verpasst haben?

War es hilfreich?

Lösung

Es scheint mir einfach, dass Sie den Datentyp der Spalten in der DataTable falsch eingestellt haben. Versuchen Sie, es explizit als int (es sieht aus wie DateTime im Moment).

Auch - die Aufgabe des DataTable ist halten Daten; nicht disply. Sie könnten speichern Sie es als strings vorformatiert, ich denke, (solange Sie sagen es, dass die Spalten Strings) - aber wenn Sie es als int speichern, dann die Anzeige vergessen; sobald Sie Convert.ToInt32 Ihren Job ausgeführt haben, ist vorbei. Wie es scheint, ist die Aufgabe des DataGridView (oder was auch immer); sagen , die über "N0" ...

Andere Tipps

Versuchen Sie einfach "N" wie in ToString ( "N");

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top