我注意到在添加两个双打时出现了一些奇怪的行为,有时它可以正常工作,有时却不行!
这是第一个例子:
double num1 = 0.1 + 0.7; //Guess the result?
容易 - 0.8 !!! 或不?
看看奇怪的结果:
猜猜看,if 语句进入 else 块,并打印num1
- 不,它不打印 0.799999999999993,它打印 0.8。
所以我又向前迈了一步,尝试了这段代码:
if (0.1 + 0.7 == 0.8) //Returns false ??
{
Console.WriteLine("Correct");
}
好的,奇怪,但现在我找到了正确的方法,它应该使用 f (float)。我记得 double 有很多空格,所以它可以包含更高的数字,也许这就是原因。
float num2 = 0.1f + 0.7f;
if (num2 == 0.8f) //Perfect - finally works !!!
{
Console.WriteLine("Correct");
}
else
{
Console.WriteLine(num2);
}
但是现在,我试试这个 - 它再次返回错误,为什么?
if (0.1f + 0.7f == 0.8f) //Returns false :(
{
Console.WriteLine("Correct");
}
调试时的手表结果:
有人可以解释一下这里有什么问题吗?是那些虫子吗?
提前致谢。