On Sat, 08 Apr 2006 08:21:06 -0700, Byte wrote: > How come: > > sum = 1/4 > print sum > > returns 0? 1/4=0.25, not 0. How do I fix this?
By default, / does integer division, not floating point. In integer division, 1/4 is 0, exactly as calculated. (How many fours go into one? Zero fours go into one, with one remainder.) There are two ways to change this: (1) Convert at least one of the numbers to a float first: >>> 1.0/4 0.25 >>> 1/float(4) 0.25 but be careful, this one doesn't do what you want: >>> float(1/4) 0.0 (2) Run the following command at the start of your program or in your interactive session: >>> from __future__ import division Now division will behave as you expect: >>> 1/4 0.25 and you can use // for integer division. Now that you can do floating point division, I peer into my crystal ball and predict your next question: why is Python so inaccurate? >>> 1/10 0.10000000000000001 Answer: it isn't. You've discovered a mathematical limitation that 1/10 cannot be written exactly in any fixed number of binary places, just like 1/3 cannot be written exactly in any fixed number of decimal places. See also: http://www.python.org/doc/faq/general.html#why-are-floating-point-calculations-so-inaccurate http://docs.python.org/tut/node16.html Hope this helps. -- Steven. -- http://mail.python.org/mailman/listinfo/python-list