double d1 = 21335.38;d1 -= 21335;
 
Response.Write(d1.ToString());结果是:
0.380000000001019而不是0.38,这是什么原理?

解决方案 »

  1.   

    +1
    用decimal类型,double频繁的操作就会出现这种bug
      

  2.   

    亲 不知道你用过windows内置计算器没有?细心的话 你会发现各种蛋疼的事情都能出现。解释这个需要一些数据理论基础。比如什么 反码 补码 等等等等 一些列。大学的时候老师讲过为啥会这样,可惜忘记了
      

  3.   

    double类型有误差,如果需要更精确可以换decimal
                decimal temp = 21335.38M;
                temp -= 21335;
                Console.WriteLine(temp);