On Tue, Nov 14, 2006 at 12:29:05PM +1100, Carlo Sogono wrote:
> Steve Lindsay wrote:
> >I suspect it's related to this:
> >
> >http://www.python.org/doc/faq/general.html#id34
> 
> Thanks. Without having gone through all the links everyone posted, I 
> have come across this line in your/Tim's link:
> 
> "Again, this has nothing to do with Python, but with the way the 
> underlying C platform handles floating point numbers, and ultimately 
> with the inaccuracy you'll always have when writing down numbers as a 
> string of a fixed number of digits."

It's not C's fault either, it's a result of the machine
not being infinite in size.  Damn machine!

> However I'm pretty sure C applications do not handle floats the same 
> way. This still gives me a 'normal' response:
> 
> int main() {
>       float a = 8.0, b = 0.45, res;
> 
>       res = a + b;
>       printf("%f\n", res);
> 
>       return (EXIT_SUCCESS);
> }
> 
> So my new question is, why doesn't C handle floats the same way?

Ah, but it does, look:

        $ python
        >>> "%f" % (8.0 + 0.45)
        '8.450000'

and modifying your C program:

        printf("%.20f\n", res);
gives
        8.44999980926513671875


Also read 

        "What Every Computer Scientist Should Know About Floating-Point 
Arithmetic"
        http://docs.sun.com/source/806-3568/ncg_goldberg.html



Regards,
Matt


psst!  The exam question will be on Theorem 14!


        
        

        

_______________________________________________
coders mailing list
coders@slug.org.au
http://lists.slug.org.au/listinfo/coders

Reply via email to