Pregunta

Estoy tratando de convertir los números en forma 123,456 a 123,456, que me parece bastante fácil usando el método .NET ToString () con un formato personalizado de N0.

Sin embargo, en un caso de los datos que estoy recibiendo formatos extraños, mientras que utilizando este método.

En este caso estoy generando un DataTable dinámicamente para mi mesa de entrada para probar el código.

DataTable dt = new DataTable();

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

Por ejemplo mis datos se parece a esto antes de formatear se aplica.

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

Me gustaría que se vea como esto.

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

Intento de formatearlo utilizando código como tal.

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

(Nota:. La razón para el formato extraño es porque yo estoy tomando un DataTable y su transposición a otro DataTable)

Usando el formato anterior Ahora recibo devuelto los siguientes datos.

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

Entonces probé con un punto decimal usando:

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

Lo que me dio el siguiente resultado.

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

Esto ahora me ha confundido porque es aceptar el hecho de que el número se puede formatear esta manera.

La siguiente cosa que intenté fue diferentes maneras de dar formato a cadenas como tal.

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");

Ninguno de ellos da el formato de número como me gustaría tampoco. ¿Alguien puede aconsejar a dónde voy mal? Es tan simple que he perdido el punto?

¿Fue útil?

Solución

A mi me parece simplemente que usted ha fijado el tipo de datos de las columnas de la DataTable incorrectamente. Trate de hacerlo explícito como un int (se ve como DateTime por el momento).

También - el trabajo de la DataTable es Mantener de datos; no se disply. Se podría almacenarlo pre-formateada como strings, supongo (siempre y cuando dice es que las columnas son cadenas) - pero si está almacenando como int, a continuación, se olvidan de la pantalla; tan pronto como se haya ejecutado Convert.ToInt32 su trabajo ha terminado. La forma en que aparece es el trabajo de la DataGridView (o lo que sea); decirle a que sobre "N0" ...

Otros consejos

Trate de usar simplemente "N", como en ToString ( "N");

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top