Fractions as result from divisions (was: Re: tough-to-explain Python)

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Wed Jul 8 08:43:55 EDT 2009


On Wed, 08 Jul 2009 11:24:28 +0200, Ulrich Eckhardt wrote:

> Bearophile wrote:
>> For example a novice wants to see 124 / 38 to return the 62/19 fraction
>> and not 3 or 3.263157894736842 :-)
> 
> Python has adopted the latter of the three for operator / and the the
> second one for operator //.

Up until a few years ago, / would return the integer division if both 
arguments where ints or longs, and // didn't even exist. Even in Python 
2.6, you still need to do

from __future__ import division 

to get the behaviour you describe.


> I wonder if it was considered to just return
> a fraction from that operation.

Because of his experience with ABC, Guido dislikes using fractions for 
standard arithmetic. He was resistant to even allowing the rational 
module be added to the standard library.

The problem with fractions is that, unless you're very careful, repeated 
arithmetic operations on numbers ends up giving you fractions like 

498655847957/569892397664

instead of the 7/8 you were expecting. Not only is that ugly, but it 
becomes slower and slower as the denominator and numerator become larger.

At least, that was Guido's experience.



-- 
Steven



More information about the Python-list mailing list