请看我的下面的代码和双重比较不能正常工作,虽然我使用了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
答案 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");
}
并定义可接受的容忍度。