title: C# Converting 20 digit precision double to string and back again
body: <p>In C#.  I have a double (which I've extracted from a database) that has 20 digit precision.  In Visual Studio (using QuickWatch) I can see the value of the double to be = 0.00034101243963859839.</p>
  
  <p>I want to display this value in a textbox and then have it be the same value when I take it out and convert it back into a double.  But I always lose the last two digits</p>
  
  <p>I've tried the following:</p>
  
  <pre><code>double d = 0.00034101243963859839;
  string s = d.ToString();
  string s2 = d.ToString("F20");
  string s3 = d.ToString("0.00000000000000000000"); -- 20 0's
  string s4 = (d*100d).ToString();
  </code></pre>
  
  <p>In these cases:</p>
  
  <pre>s  = 0.000341012439638598
  s2 = 0.00034101243963859800
  s3 = 0.00034101243963859800
  s4 = 0.0341012439638598</pre>
  
  <p>I want to be able to do the following:</p>
  
  <pre><code>double d = 0.00034101243963859839;
  string s = d.ToString();
  //...
  double d2 = double.Parse(s);
  if(d == d2)
  {
    //-- Success
  }
  </code></pre>
  
  <p>Is there any way to keep those last two digits of precision??</p>