This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Bizarre output.


Srinath M wrote:

> Can someone tell me why the text, "I see it" is not displayed when this
> program is run?
>
> #include <stdio.h>
>                                                                        
>                                                                 
> int main(void)
> {
>   float a, b;
>                                                                        
>                                                                 
>   double d;
>                                                                        
>                                                                 
>   a = 0.;
>                                                                        
>                                                                 
>   b = 1.;
>                                                                        
>                                                                 
>   for (d  = 0.0; d < 0.011; d = d + 0.001)
>     {
>       printf("d = %f\n",d);
>                                                                        
>                                                                 
>       if (d == 0.009)
>         {
>           printf ("I see it\n");
>         }
>     }
>   return 0;
> }
>
Well, in my opinion you should normally not use "==" in conection with
float or double, because floating-point arithmetic is not exact (not
only with gcc). Besides 0.001 has not an exact representation as
floating point number ... Try
...
if(d > 0.008999 && d < 0.009001)
    printf(...);
...
antonio


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]