小编Leo*_*eon的帖子

C#与.Equals()比较两个double

我使用ReShaper,当我用==比较两个double值时,它表明我应该使用Math.具有公差的ABS方法.请参阅:https://www.jetbrains.com/help/resharper/2016.2/CompareOfFloatsByEqualityOperator.html

这个例子

double d = 0.0;
double d2 = 0.0;
if (d == d2)
{
    /* some code */
}
Run Code Online (Sandbox Code Playgroud)

然后转换为

double d = 0.0;
double d2 = 0.0;
if (Math.Abs(d - d2) < TOLERANCE)
{
    /* some code */
}
Run Code Online (Sandbox Code Playgroud)

但我认为开发人员考虑正确的容忍度确实很复杂.所以我认为这可以在Double.Equals()方法中实现.

但是这种方法是这样实现的

public override bool Equals(Object obj) {
    if (!(obj is Double)) { 
        return false;
    } 
    double temp = ((Double)obj).m_value; 
    // This code below is written this way for performance reasons i.e the != and == …
Run Code Online (Sandbox Code Playgroud)

c# double compare

5
推荐指数
1
解决办法
4436
查看次数

标签 统计

c# ×1

compare ×1

double ×1