Fun with numbers - dammit, but I want a cast!

Andrew Koenig ark at acm.org
Mon Aug 11 09:51:20 EDT 2003


Graham> I'm having some fun with numbers.  I've extraced an image
Graham> sizes from a jpeg file

Graham>         img_x,img_y=image.getsize()

Graham> then I'm trying to use those sizes to scale the image, but
Graham> because python has decided that they are integers, I keep
Graham> getting division by zero errors

Graham> eg      
Graham>         xscale=xframe/img_x

Graham> where xframe will be say 300, and img_x will be 1800
Graham> xscale has the value 0.

Graham> I've tried doing img_x=1.0 to force it to be a float, but I'm
Graham> getting a bit frustrated as it seems to make no difference -
Graham> once image.getsize returns the (integer) value of the x size,
Graham> it simply converts back to an int.

Two possibilities:

        1) Create a floating-point value from the dividend or divisor,
           which will cause the other one to be converted to float:

                xscale = float(xframe) / img_x

           or

                xscale = xframe / float(img_x)

        2) At the beginning of your source file, execute:

                from __future__ import division

          Python is going to change its behavior so that division always
          returns a floating-point value.  This statement causes that new
          behavior to occur now.

-- 
Andrew Koenig, ark at acm.org




More information about the Python-list mailing list