On Thu, May 21, 2009 at 11:05 PM, <seanm...@gmail.com> wrote: > The explaination in my introductory Python book is not very > satisfying, and I am hoping someone can explain the following to me: > >>>> 4 / 5.0 > 0.80000000000000004 > > 4 / 5.0 is 0.8. No more, no less. So what's up with that 4 at the end. > It bothers me.
Well, how much would 1 / 3.0 be? Maybe 0.3333333333... with a certain (large) number of threes? And if you multiply that by 3, will it be 1.0 again? No, because you cannot represent 1/3.0 as a precise decimal fraction. Internally, what is used are not decimal but binary fractions. And as a binary fraction, 4/5.0 is just as impossible to represent as 1/3.0 is (1/3.0 = 0.0101010101... and 4/5.0 = 0.110011001100... to be exact). So 4 / 5.0 gives you the binary fraction of a certain precision that is closest to 0.8. And apparently that is close to 0.80000000000000004 -- André Engels, andreeng...@gmail.com -- http://mail.python.org/mailman/listinfo/python-list