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/genera...-so-inaccurate http://docs.python.org/tut/node16.html
Hope this helps.

--

Steven.