c++cfloating-pointdouble-precision

strange output in comparison of float with float literal


float f = 0.7;
if( f == 0.7 )
    printf("equal");
else
    printf("not equal");

Why is the output not equal ?

Why does this happen?


Solution

  • This happens because in your statement

      if(f == 0.7)
    

    the 0.7 is treated as a double. Try 0.7f to ensure the value is treated as a float:

      if(f == 0.7f)
    

    But as Michael suggested in the comments below you should never test for exact equality of floating-point values.