On Thu, 01 Apr 2010 19:49:43 -0500, Tim Chase wrote: > David Robinow wrote: >> $ python -c "print 1/2 * 1/2" >> 0 >> >> But that's not what I learned in grade school. >> (Maybe I should upgrade to 3.1?) > > That's because you need to promote one of them to a float so you get a > floating-point result: > > >>> 1/2 * 1/2 > 0 > >>> 1/2 * 1/2.0 > 0.0 > > Oh...wait ;-)
Tim, I'm sure you know the answer to this, but for the benefit of the Original Poster, the problem is that you need to promote *both* divisions to floating point. Otherwise one of them will give int 0, which gives 0.0 when multiplied by 0.5. >>> 1.0/2 * 1/2.0 0.25 If you want an exact result when multiplying arbitrary fractions, you need to avoid floats and decimals and use Fractions: >>> Fraction(1, 2)**2 Fraction(1, 4) -- Steven -- http://mail.python.org/mailman/listinfo/python-list