hello daniweb...
i got my head struck with the code, and unable to understand the output.please help..

int main(void)
{
   float i=3.3;
   if(i < 3.3) 
        printf("hy");
   else
        printf("bye");
  return 0;
}

output should by bye as 3.3 < 3.3 condition false , but why it is printing hy.
i am using gcc compiler

Edited 5 Years Ago by geeksforgeek: n/a

Sorry Narue, i studies both links but cant find why the code is giving such output... :(

i checked the code

int main(void)
{
   float i=3.3;
   if(i < 3.3) 
        printf("hy %f\n",fabs(i)-fabs(3.3));
   else
        printf("bye");n why 
  return 0;
}

but its giving output hy 0.000000 if difference of there precision is zero, then why if condition is getting true..??

Edited 5 Years Ago by geeksforgeek: n/a

Because 3.3 is not 3.3 in computers. Floating point is inaccurate.

3.3 could really be 3.300001 or 3.299998.

Try running this code

#include <stdio.h>

int main(void)
{
   float i=3.3;
   
   fprintf(stdout, "%f\n", i - 3.3);
   fprintf(stdout, "%f\n", 3.3 - i);
  return 0;
}

yep checked, got something:

nos like 3.3 and 5.2 are recurring float number so it different for float and double.............Number likes 4.5, 3.25, 5.0 will store same values in float and double data type.

is this the answer

The answer is that floating-point values are not always exact, and if you expect them to always be exact, you get what you deserve.

This article has been dead for over six months. Start a new discussion instead.