Como converter duplo para string sem o poder a 10 de representação (E-05)

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

  •  19-09-2019
  •  | 
  •  

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

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top