none
Converter double em string RRS feed

  • Pergunta

  • Pessoal, estou com um problema que aparentemente a solução é simples...Mas ainda não consegui...

    Preciso converter um double para string...Mas não é um double qualquer. Esse double, pode ter 10, 15, 20 casas decimais. Quero converter para string sem fazer nenhum tipo de arredondamento, deve retornar uma string com os valores identicos ao do double.

    Exemplo:

     double valueDouble = 0.00000010000000099991;
     string valueString = valueDouble.ToString();
    //valueString = 1.0000000099991E-07 - ERRADO, TERIA Q SER = 0.00000010000000099991
    
    
    double valueDouble = 0.00000010000000099991;
    string valueString = valueDouble.ToString("F25");
    //valueString = 0.0000001000000009999100000 - OK DESSA FORMA ME ATENDE, SÓ QUE PARA O DOUBLE = 10.00000010000000099991 NAO OCORRE O MESMO, VEJAMOS...
    
    
    double valueDouble = 10.00000010000000099991;
    string valueString = valueDouble.ToString("F25");
    //valueString = 10.0000001000000000000000000 - ERRADO, AO FAZER A CONVERSAO O VALOR INICIAL FOI ALTERADO

     Espero que tenha sido claro, e espero que possam me ajudar...

    abs,

    Wallyson

    domingo, 6 de maio de 2012 21:22

Todas as Respostas

  • The formatting leads to some surprising roundings. Consider this example:

          double d = 42.499999999999975;
          d.ToString("R");  // correctly returns "42.499999999999972"
          d.ToString("F0"); // incorrectly returns "43"

    In some cases you might prefer to use the Round method instead. It would project the above System.Double to 42.0, not 43.0.


    EDIT. Effectively, this is a kind of rounding twice. First, the number is rounded to 15 significant digits, and only after that, the number is rounded to the number of decimal places specified (e.g. 0 in "F0", or "N0"). See http://en.wikipedia.org/wiki/Rounding#Double_rounding


    Rafael Vieira Arquiteto de Software

    • Sugerido como Resposta hamiltonj segunda-feira, 7 de maio de 2012 14:13
    domingo, 6 de maio de 2012 22:00