为什么双重比较不适用于if条件?

时间:2017-04-28 19:08:43

标签: c# .net

请看我的下面的代码和双重比较不能正常工作,虽然我使用了cast,double.Equal()方法,但没有结果。假装

double b;
b = (1.6 + 1.6 + 1.6) / 3.0;

if( b == 1.6d)
{
     Console.WriteLine("True");
}
else
{
     Console.WriteLine("False");
}

// if( b.Equal(1.6))  -- No Result

1 个答案:

答案 0 :(得分:3)

因为操作(1.6 + 1.6 + 1.6) / 3.0的实际结果值为1.6000000000000003

您需要使用:

if(Math.Abs(1.6d - value) < TOLERANCE)
{
     Console.WriteLine("True");
}
else
{
     Console.WriteLine("False");
}

并定义可接受的容忍度。

查看0.30000000000000004.com