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

¿Fue útil?

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

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