在.NET里面,我用的一个数据是double类型。
但是,在处理时候,我发现如下情况:
double d = 0.30000000000000004;
Console.Writeline("d=" + d.ToString());打印出来的值居然是: d=0.3
很是困惑!(导致我的程序很久才发现,一个很严重的bug是由这个引起的。)各位多多指教!

解决方案 »

  1.   

    double的精度是15位吧
    而且高精度的数值计算要用decimal
      

  2.   

    不是这个问题。
    在double d = 0.30000000000000004;
    之后设置断点
    你看d的值是 0.30000000000000004,一点都没错。就是后面的.ToString()就不对了。
      

  3.   

    more refence from MSDN:Type          Approximate range                   Precision    .NET Framework type
     
    double       ±5.0 × 10−324 to ±1.7 × 10308     15-16 digits   System..::.Double
     
      

  4.   

    more refence from MSDN:Type/ Approximate range/ Precision /.NET Framework type
     
    double/ ±5.0 × 10−324 to ±1.7 × 10308/ 15-16 digits /System..::.Double
      

  5.   

    double类的tostring()方式是调api的
    具体它是怎么转换的不知道
    但是,的确你这样的数字,就不应该用double,而应该改用decimal你可以看看这个double精度
      

  6.   

    用:
                decimal d = 0.30000000000000004m;
                Console.WriteLine(d);//0.30000000000000004
      

  7.   

    double 没这么长吧用float就可以了,精度问题
      

  8.   

    .NET 里面,有double 没有float.现在的问题是.ToString().
      

  9.   

    http://edu.codepub.com/2010/0414/22010.php
      

  10.   


    额,哥们,谁说的.NET里面没有float哦?