C#中值类型的Equls方法
今天遇到double.Equals(0.0,0)返回False的问题,根据实际判断,使用0.0 == 0 才能正确的返回True,是否C#所有类型的Equals方法都是引用的比较,对于本身不是引用类型的值类型数据,如何判断引用呢,或者是有其他的原因,后面有时间搜索下。
View Code
double dblProduct = 0; if(double.Equals(dblProduct,0)) //False if(dblProduct == 0) // True { double dblGapRate = (dblProduct - 1000) /dblProduct; }
补充1:代码中存在几个问题,猜测原因如下:
1.double类型的比较问题,double类型和int类型进行比较时,编译器进行了隐式的转换,使得未报编译错误。但Equals时报不等,那==又是转换为什么类型比较的呢;
2.代码在VS2010环境中dblGapRate返回值为-Infinity,以前应该有个期望的DivideByZeroException,难道是优化的结果?
3.dblProduct.ToString()的结果为“0”,在监视中查看的为“0.0”,有何不同?