Saltar al contenido

formatear un número con comas y decimales en C# (asp.net MVC3)

Siéntete libre de divulgar nuestro sitio y códigos con tus amigos, ayúdanos a ampliar esta comunidad.

Solución:

int number = 1234567890;
Convert.ToDecimal(number).ToString("#,##0.00");

obtendrás el resultado 1,234,567,890.00.

Tal vez simplemente desee el formato estándar string "N"como en

number.ToString("N")

Utilizará separadores de miles y un número fijo de decimales fraccionarios. El símbolo de los separadores de miles y el símbolo del punto decimal dependen del proveedor de formato (normalmente CultureInfo) que utilice, al igual que el número de decimales (que normalmente serán 2, según lo requiera).

Si el proveedor de formato especifica una cantidad diferente de decimales y no desea cambiar el proveedor de formato, puede proporcionar la cantidad de decimales después de la Ncomo en .ToString("N2").

Editar: Los tamaños de los grupos entre las comas se rigen por el

CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes

arraydado que no especifica un proveedor de formato especial.

Yo tuve el mismo problema. Quería formatear números como el formato “General” en hojas de cálculo, lo que significa mostrar decimales si son significativos, pero eliminarlos si no. En otras palabras:

1234,56 => 1234,56

1234 => 1234

Debe admitir una cantidad máxima de lugares después del decimal, pero no coloque ceros o puntos finales si no es necesario y, por supuesto, debe ser compatible con la cultura. Realmente nunca descubrí una manera limpia de hacerlo usando String.Format solo, pero una combinación de String.Format y Regex.Replace con algo de ayuda cultural de NumberFormatInfo.CurrentInfo hizo el trabajo (LinqPad C# Program).

string FormatNumber(T number, int maxDecimals = 4) 
    return Regex.Replace(String.Format("0:n" + maxDecimals + "", number),
                         @"[" + System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator + "]?0+$", "");
   

void Main()
    foreach (var test in new[]  123, 1234, 1234.56, 123456.789, 1234.56789123  )
        Console.WriteLine(test + " = " + FormatNumber(test));

Produce:

123 = 123
1234 = 1,234
1234.56 = 1,234.56
123456.789 = 123,456.789
1234.56789123 = 1,234.5679

Tienes la posibilidad difundir esta noticia si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *