Come convertire doppia a stringa senza il potere di rappresentanza 10 (E-05)

StackOverflow https://stackoverflow.com/questions/1319191

  •  19-09-2019
  •  | 
  •  

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

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top