Come convertire doppia a stringa senza il potere di rappresentanza 10 (E-05)
Domanda
Come convertire doppia a stringa senza il potere di rappresentanza 10 (E-05)
double value = 0.000099999999833333343;
string text = value.ToString();
Console.WriteLine(text); // 9,99999998333333E-05
Mi piacerebbe la stringa testo di essere ,000099999999833333343 (o quasi che, io non sto facendo scienza missilistica:)
Ho provato le seguenti varianti
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
In questo tostring N20 o il formato F20 sembra più vicino a quello che voglio, ma faccio finire con un sacco di zeri finali, c'è un modo intelligente per evitare questo? Mi piacerebbe arrivare più vicino possibile alla doppia rappresentazione il più possibile 0,000099999999833333343
Soluzione
String.Format () con il di formato . Penso che si desidera. {0: F20} o giù di lì
string formatted = String.Format("{0:F20}", value);
Altri suggerimenti
Non è necessario string.Format()
. Basta mettere il diritto formato stringa nel metodo .ToString()
esistente. Qualcosa come "N" dovrebbe fare.
Come su
Convert.ToDecimal(doubleValue).ToString()
Usa string.Format
con una di formato appropriato.
Questo post del blog ha un sacco di esempi: http: //blogs.msdn.com/kathykam/archive/2006/03/29/564426.aspx