以下 C# 代码不起作用:
int iValue = 0;
double dValue = 0.0;
bool isEqual = iValue.Equals(dValue);
那么问题来了:比较 Double 和 Int 的最佳方法是什么?
您确实不能以天真的方式比较浮点值和整数值;特别是,因为有经典浮点 https://stackoverflow.com/questions/328475/should-we-compare-floating-point-numbers-for-equality-against-a-relative-error 代表挑战 https://stackoverflow.com/questions/485175/c-net-is-it-safe-to-check-floating-point-values-for-equality-to-0。你什么can要做的就是从另一个中减去一个,看看它们之间的差异是否小于您关心的某个精度,如下所示:
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
你真的必须为自己定义什么equality
对你来说意味着。例如,您可能希望将浮点值舍入到最接近的整数,以便 3.999999981 将“等于”4。或者您可能希望截断该值,因此它实际上是 3。这完全取决于您的情况正在努力实现。
EDIT:请注意,我选择 0.0000001 作为示例阈值...您需要自己决定什么精度足以进行比较。只要意识到你需要在正常的代表性范围内double
我相信它的定义是Double.Epsilon
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)