This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: Bizarre output.
- From: Antonio Coralles <noche dot suapie at reflex dot at>
- To: Srinath M <msrinath80 at yahoo dot com>
- Cc: gcc-help at gcc dot gnu dot org
- Date: Wed, 30 Mar 2005 00:12:58 +0200
- Subject: Re: Bizarre output.
- References: <fc.3b9aca006b2d42243b9aca0024422d6b.428315a@reflex.at>
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