Como converter duplo para string sem o poder a 10 de representação (E-05)
Pergunta
Como converter duplo para string sem o poder a 10 de representação (E-05)
double value = 0.000099999999833333343;
string text = value.ToString();
Console.WriteLine(text); // 9,99999998333333E-05
Eu gostaria a cadeia texto para ser ,000099999999833333343 (ou quase isso, eu não estou fazendo a ciência de foguetes:)
Eu tentei o seguinte 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
Fazendo tostring N20 ou o formato F20 parece mais próximo do que eu quero, mas eu acabar com um monte de zeros à direita, há uma maneira inteligente de evitar isso? Eu gostaria de ficar tão perto da dupla representação possível ,000099999999833333343
Solução
Use String.Format () com o especificador de formato. Eu acho que você quer. {0: F20} ou então
string formatted = String.Format("{0:F20}", value);
Outras dicas
Você não precisa string.Format()
. Basta colocar o seqüência de formato certo no método .ToString()
existente. Algo como "N" deve fazer.
Como cerca
Convert.ToDecimal(doubleValue).ToString()
Use string.Format
com um especificador de formato apropriado.
Este blog tem um monte de exemplos: http: //blogs.msdn.com/kathykam/archive/2006/03/29/564426.aspx