Cómo convertir a doble cadena sin el poder de representación 10 (E-05)
Pregunta
Cómo convertir a doble cadena sin el poder de representación 10 (E-05)
double value = 0.000099999999833333343;
string text = value.ToString();
Console.WriteLine(text); // 9,99999998333333E-05
Me gustaría que la cadena texto para ser 0.000099999999833333343 (o casi eso, no estoy haciendo ciencia de cohetes:)
He probado las siguientes variantes
Console.WriteLine(value.ToString()); // 9,99999998333333E-05
Console.WriteLine(value.ToString("R20")); // 9,9999999833333343E-05
Console.WriteLine(value.ToString("N20")); // 0,00009999999983333330
Console.WriteLine(String.Format("{0:F20}", value)); // 0,00009999999983333330
Hacer toString N20 o el formato F20 parece más cercano a lo que yo quiero, sino que lo hacen terminan con una gran cantidad de ceros a la derecha, hay una manera inteligente para evitar esto? Me gustaría llegar lo más cerca a la doble representación de lo posible 0,000099999999833333343
Solución
Utilice String.Format () con el especificador de formato. Creo que quieres. {0: F20} o menos
string formatted = String.Format("{0:F20}", value);
Otros consejos
No es necesario string.Format()
. Sólo hay que poner la derecha formato de cadena en el método .ToString()
existente. Algo así como "N" debe hacer.
¿Qué tal
Convert.ToDecimal(doubleValue).ToString()
Uso string.Format
con un especificador de formato apropiado.
Este blog tiene un montón de ejemplos: http: //blogs.msdn.com/kathykam/archive/2006/03/29/564426.aspx