之间是否存在任何性能差异
float x, y;
// Set x and y
if(x > y)
{
// do something
}
和
float x,y;
// Set x and y
if(x.CompareTo(y) > 0)
{
// do something
}
他们是在幕后做同样的事情还是有更多的事情要做。我有一段对性能至关重要的代码进行了很多次这种比较,我想检查是否没有发生比我想象的更多的事情。
最佳答案
以下是一般性评论,不考虑性能。您应该知道,使用运算符和 IComparable
方法之间存在细微差别。他们几乎也在做同样的事情。不同之处在于当您的两个值都是 NaN
并且您正在检查是否相等时。请参阅以下示例:
float x = float.NaN;
float y = float.NaN;
bool resultOperator = (x == y); // will be false
bool resultCompareTo = (x.CompareTo(y) == 0); // will be true(!)
造成这种不一致的原因是 IComparable
接口(interface)要求 x.CompareTo(x)
返回零。
关于c# - 浮点类型比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3283238/