Am 11.01.2011 09:34, schrieb ratheesh k: > On Tue, Jan 11, 2011 at 1:31 PM, Thomas Weber > <thomas.weber.linux@xxxxxxxxxxxxxx> wrote: >> Okay, now I got it. >> >> Look for IEEE754. >> >> 0.1 is in double precision 0.10000000149011612 >> >> Thomas >> > > Is it possible to print the correct "printf" statement by typecasting > some of operations or data types. I tried with no success. > > -Ratheesh Try something with precision and typecast float to double printf("f:%.10f is 1.0 \n",(double) f); Thomas > > >> Am 11.01.2011 08:55, schrieb Uriel Corfa: >>> I'd say : rounding errors. Floating point goes in mysterious ways. >>> >>> On Tue, Jan 11, 2011 at 8:38 AM, ratheesh k <ratheesh.ksz@xxxxxxxxx> wrote: >>>> I could not understand why it getting printed like this. Could any >>>> body tell me. >>>> >>>> #include <stdio.h> >>>> >>>> int main() >>>> { >>>> float f=0.0f; >>>> int i; >>>> >>>> for(i=0;i<10;i++) >>>> f = f + 0.1f; >>>> >>>> if(f == 1.0f) >>>> printf("f is 1.0 \n"); >>>> else >>>> printf("f is NOT 1.0\n"); >>>> >>>> return 0; >>>> } >>> >> -- To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html