On Thu, Apr 1, 2010 at 10:44 PM, Steven D'Aprano <st...@remove-this-cybersource.com.au> wrote: > 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)
I should have known he wouldn't get it. -- http://mail.python.org/mailman/listinfo/python-list