Necesito aplicar el formato al número de tipo decimal. Digamos que un número 12345 debe mostrarse en el formato ## ##0,0. Entonces, la salida requerida es 12 345,0. Pero de alguna manera no se aplica correctamente y obtengo el resultado como 1 2,345.

A continuación se muestra el código que hace el trabajo de formateo. Compruebe también este fiddle donde se reproduce mi problema.

ACTUALIZADO

CultureInfo ci = new CultureInfo("fr-FR");
decimal integral = Convert.ToDecimal("12345");
Console.WriteLine(integral.ToString("## ##0,0"));

Sé que hay muchas soluciones relevantes para el formato ya disponibles pero que no pueden entender qué hay de malo en esto.

1
JDoshi 30 dic. 2016 a las 12:52

3 respuestas

La mejor respuesta

No está utilizando la información cultural creada para formatear el número. Además, su especificador de formato es incorrecto. Siempre debe usar el PUNTO como separador decimal en la cadena de formato, que luego se reemplaza por el separador decimal específico de la cultura (una coma para fr-FR).

Lo siguiente debería funcionar correctamente:

integral.ToString("## ##0.0", ci)
2
Mr47 30 dic. 2016 a las 10:10

Puedes usar esta función:

public static string FormatNumber(this double number)
        {
            return number.ToString("#,##0.00");
        }

Y luego llama a tu función como:

decimal integral = Convert.ToDecimal("12345");
Console.WriteLine(integral.FormatNumber());
0
Beldi Anouar 30 dic. 2016 a las 09:59

He proporcionado respuesta aquí: https://stackoverflow.com/a/40443891/2963805

He mostrado múltiples formas y espero que eso te ayude.

0
Community 23 may. 2017 a las 11:52