Mur*_*are 24 c# double int equals
C#中的以下代码不起作用:
int iValue = 0;
double dValue = 0.0;
bool isEqual = iValue.Equals(dValue);
Run Code Online (Sandbox Code Playgroud)
那么,问题是:比较Double和Int的最佳方法是什么?
LBu*_*kin 49
你真的无法以天真的方式比较浮点值和积分值; 特别是,因为经典的浮点 表示挑战.你可以做的是从另一个中减去一个,看看它们之间的差异是否小于你关心的精度,如下所示:
int iValue = 0;
double dValue = 0.0;
var diff = Math.Abs(dvalue - iValue);
if( diff < 0.0000001 ) // need some min threshold to compare floating points
return true; // items equal
Run Code Online (Sandbox Code Playgroud)
你真的要为自己定义对你equality意味着什么.例如,您可能希望浮点值向最接近的整数舍入,以便3.999999981将"等于"4.或者您可能希望截断该值,因此它实际上将为3.这完全取决于您的内容正在努力实现.
编辑:请注意,我选择0.0000001作为示例阈值...您需要自己决定什么精度足以进行比较.只是意识到你需要处于double我认为被定义为的正常表示范围内Double.Epsilon.
| 归档时间: |
|
| 查看次数: |
29397 次 |
| 最近记录: |