title: Parsing json string number losing minimum precision
body: <p>i'm working in a C# (Unity3D compatible = .NET 2.0) Json library and i'm having precision problems. Firstly i have this logic in order to parse number strings:</p>
  
  <pre><code>...
  string jsonPart ="-1.7555215491128452E-19"
  enter code here
  long longValue = 0;
  if (long.TryParse(jsonPart, NumberStyles.Any, CultureInfo.InvariantCulture, out longValue))
  {
      if (longValue &gt; int.MaxValue || longValue &lt; int.MinValue)
      {
          jsonPartValue = new JsonBasic(longValue);
      }
      else
      {
          jsonPartValue = new JsonBasic((int)longValue);
      }
  }
  else
  {
      decimal decimalValue = 0;
      if (decimal.TryParse(jsonPart, NumberStyles.Any, CultureInfo.InvariantCulture, out decimalValue))
      {
          jsonPartValue = new JsonBasic(decimalValue);
      }
  }
  ...
  </code></pre>
  
  <p>The problem comes because decimal type is not the best type always for big decimal numbers. I have an output log to show you the problem (using .ToString()):</p>
  
  <pre><code>String = "-1.7555215491128452E-19"
  Float Parsed : -1.755522E-19
  Double parsed : -1.75552154911285E-19
  Decimal Parsed : -0.0000000000000000001755521549
  </code></pre>
  
  <p>but on the other way , this examples with decimal type is the right one:</p>
  
  <pre><code>String = "0.1666666666666666666"
  Float Parsed : 0.1666667
  Double parsed : 0.166666666666667
  Decimal Parsed : 0.1666666666666666666
  
  String = "-1.30142114406914976E17"
  Float Parsed : -1.301421E+17
  Double parsed : -1.30142114406915E+17
  Decimal Parsed : -130142114406914976
  </code></pre>
  
  <p>I suppost there is many other cases that can balance to one type or another. 
  Is there any smart way to parse it loosing minimum precision?</p>