¿Cómo puedo dar formato a un Double
a un String
en C# para tener sólo dos decimales?
Si uso String.Format("{0:0.00}%", myDoubleValue)
el número se redondea y quiero un truncamiento simple sin redondeo. También quiero la conversión a String
para ser sensible a la cultura.
Respuestas
¿Demasiados anuncios?Uso lo siguiente:
double x = Math.Truncate(myDoubleValue * 100) / 100;
Por ejemplo:
Si el número es 50.947563 y usas el siguiente, sucederá lo siguiente:
- Math.Truncate(50.947563 * 100) / 100;
- Math.Truncate(5094.7563) / 100;
- 5094 / 100
- 50.94
Y ahí está tu respuesta truncada, ahora para dar formato a la cadena simplemente haz lo siguiente:
string s = string.Format("{0:N2}%", x); // No fear of rounding and takes the default number format
decimal d = 0.241534545765;
decimal d2 = 0.241;
decimal d3 = 0.2;
d.ToString("0.##%"); //24.15%
d2.ToString("0.##%"); //24.1%
d3.ToString("0.##%"); //20%
http://dobrzanski.net/2009/05/14/c-decimaltostring-and-how-to-get-rid-of-trailing-zeros/
Sugiero que primero trunque, y luego formatee:
double a = 123.4567;
double aTruncated = Math.Truncate(a * 100) / 100;
CultureInfo ci = new CultureInfo("de-DE");
string s = string.Format(ci, "{0:0.00}%", aTruncated);
Use la constante 100 para truncar 2 dígitos; use un 1 seguido de tantos ceros como dígitos después del punto decimal que desee. Use el nombre de la cultura que necesita para ajustar el resultado del formato.