结果居然是0.029999999999999805???怎么回事???

解决方案 »

  1.   

    改用float就可以了,或者取出来后自己再格式化。浮点的有效位比较多,所以会这样。。
      

  2.   

    要精确就不要用浮点数
    decimal db = 3.03m-3; 
      

  3.   

    double db = 3.03-3D; 
      

  4.   

     for (int i = 0; i <= 1; )
            {
                Console.WriteLine("thanks");
            }
      

  5.   

    要精确就不要用浮点数
    decimal db = 3.03m-3; 恩!
    谢谢大家了!!!!
      

  6.   


    怎么可能两个有效位是固定的?你去试试float跟double的取10位看哪个准?float后面都是零掉了。对于一般的运算都是float,要求精度更高的则需要用double来计算。
      

  7.   

    float有效位7位,double有效位15-16为
    但对于一个无限小数,不管有效位多少都没有用
    float与double的小数都使用的真的二进制小数
    对于二进制小数,只有2的负幂的和才是有限小数,才是精确的
    比如0.5 0.375 0.0625等
    你可以试一下用浮点数来表示这些小数
    是精确的~
      

  8.   

    Console.WriteLine(3.03 - 3);
    Console.WriteLine(3.03125-3);
    输出:
    0.0299999999999998
    0.03125