using System;class Hello
{
public static void Main()
{
double A=145955.42;
double B=145953.53;
double C;
C=A-B;
Console.WriteLine(C);
Console.ReadLine();
}
}得出的C的值为:1.89000000001397请问怎样才能得出正确的值1.89呢?谢谢!如果当A、B、C三个变量的小数位都不能确定的时候,又有什么办法吗?谢谢!

解决方案 »

  1.   

    参考:由于计算机里的数据是用二进制表示的,它与浮点型不是一一对应的,   例如"根2"值为1.414.....  , 用二进值表示很难,可能会有一些微小的转换误差,所以计算机是用近似值表示的,例如判断一个数是否为零的方法:大概这样:  int  zero=10*E-6;        //精确度public bool JudgeZero(int num) {     if(Math.fabs(num-zero)<0.001)     {            return true;      }     return false;}
      

  2.   

    float和double类型的主要设计目标是为了科学计算和工程计算。它们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。float和double类型对于货币计算尤为不合适,因为要让一个float或者double精确地表达0.1(或者10的任何其他负数次方值)是不可能的。
                                                                   -- 《Effective Java》
    因此,应该使用decimal
      

  3.   

    double,float 都不给你用的
    用 decimal 吧!
      

  4.   

    decimal a1=145955.42M,a2=145953.53M;
    decimal a3=a1-a2;