c# - 浮点类型比较

标签 c# performance floating-point

之间是否存在任何性能差异

 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/

相关文章:

c# - 使用Html Agility Pack解析Html

c# - 在 Sitecore glass 映射器中禁用特定属性的版本检查

c# - 多个根节点

c# - .Net 4.5 中的 Active Directory 组成员身份检查

c - 如何提高 C 中大数据排序的执行速度

performance - 切换到另一个文件时,未保存的 XAML 文件非常慢

java - Android ImageView 动画很慢

lua - 使用 LUA 解码 UDP 消息

Java游戏的浮点计算未返回正确的值

c++ - 从字符串中读取精度高达 6 的浮点值