Question about typing: ints/floats

Steven D'Aprano steven at REMOVE.THIS.cybersource.com.au
Wed Mar 3 21:00:02 EST 2010


On Wed, 03 Mar 2010 15:45:51 -0800, Wells wrote:

> But:
> 
>>>> a = 1
>>>> b = 3
>>>> a / b
> 0
> 
> This does not implicitly do the casting, it treats 'a' and 'b' as
> integers, and the result as well. Changing 'b' to 3.0 will yield a float
> as a result (0.33333333333333331)

This is  design flaw in older versions of Python, that the / operator for 
ints performs integer division rather than floating point division.

In Python 2.5 and beyond, you can fix this by calling 

from __future__ import division 


at the top of your module, and then / will perform float division with 
int arguments, and you can use // for integer division.

Or upgrade to Python 3.1, where this is the default behaviour and there 
is no need for the from __future__ call.



-- 
Steven



More information about the Python-list mailing list