I have noticed for some strange behavior while adding two doubles, sometimes it works correct, and sometimes not!
Here is the first example:
double num1 = 0.1 + 0.7; //Guess the result?
Easy - 0.8 !!! or not?
Look at the strange result:
And guess what, the if statement is going inside the else block, and prints the num1
- and no, it doesn't prints 0.799999999999993, it prints 0.8.
So I have gone one more step forward and tried this code:
if (0.1 + 0.7 == 0.8) //Returns false ??
{
Console.WriteLine("Correct");
}
OK, strange, but now I found the correct way, it should use f (float). As I remember double has many spaces, so it can contain higher numbers, maybe this is the cause.
float num2 = 0.1f + 0.7f;
if (num2 == 0.8f) //Perfect - finally works !!!
{
Console.WriteLine("Correct");
}
else
{
Console.WriteLine(num2);
}
But now, I try this - and again it returns false, why?
if (0.1f + 0.7f == 0.8f) //Returns false :(
{
Console.WriteLine("Correct");
}
The watch results when debugging it:
Can someone explain me what's wrong here? Are those bugs?
Thanks in advance.