floating point numbers equality checking
c, floating-point
Solution
You should understand that in C the literal 3.3 has type double. Converting a double to a float may lose precision, so the comparison of 3.3F with 3.3 yields false. For 3.5 the conversion is lossless since both can be represented exactly and the comparison yields true.
It's somewhat related to (in base 10 instead of base 2) comparing
3.3333333 with 3.3333333333333333 (false)
3.5000000 with 3.5000000000000000 (true)
Problem
With the following code, ``` #include <stdio.h> int main(void){ float x; x=(float)3.3==3.3; printf("%f",x); return 0; } ``` the output is 0.00000 but when the number 3.3 is replaced with 3.5, ``` #include <stdio.h> int main(void){ float x; x=(float)3.5==3.5; printf("%f",x); return 0; } ``` the output is 1.0000 Why is there a difference in output?