Integer division operator can give float result?
Is this intentional? I would have expected the // operator to always give an integer result. Python 2.3 (#1, Aug 5 2003, 15:52:30) [GCC 3.1 20020420 (prerelease)] on darwin Type "help", "copyright", "credits" or "license" for more information.
7.0 // 2 3.0
-- Greg
On Tuesday 27 February 2007 22:34, Greg Ewing wrote:
Is this intentional? I would have expected the // operator to always give an integer result.
Think "floor division", not "integer division". The result (r) may be a float, but it'll hold to the constraint: r == int(r) -Fred -- Fred L. Drake, Jr. <fdrake at acm.org>
Greg Ewing wrote:
Is this intentional? I would have expected the // operator to always give an integer result.
Python 2.3 (#1, Aug 5 2003, 15:52:30) [GCC 3.1 20020420 (prerelease)] on darwin Type "help", "copyright", "credits" or "license" for more information.
7.0 // 2 3.0
From the Language Reference:
The / (division) and // (floor division) operators yield the quotient of their arguments. The numeric arguments are first converted to a common type. Plain or long integer division yields an integer of the same type; the result is that of mathematical division with the `floor' function applied to the result. So, first the arguments are converted to a common type, in this case float. Then the division is made. Then the 'floor' function is applied. Result: 3.0. So yes, it's intentional. Regards, -- . Facundo . Blog: http://www.taniquetil.com.ar/plog/ PyAr: http://www.python.org/ar/
Also consider this example:
7.2 // 0.5 14.0
On 2/28/07, Facundo Batista <facundo@taniquetil.com.ar> wrote:
Greg Ewing wrote:
Is this intentional? I would have expected the // operator to always give an integer result.
Python 2.3 (#1, Aug 5 2003, 15:52:30) [GCC 3.1 20020420 (prerelease)] on darwin Type "help", "copyright", "credits" or "license" for more information.
7.0 // 2 3.0
From the Language Reference:
The / (division) and // (floor division) operators yield the quotient of their arguments. The numeric arguments are first converted to a common type. Plain or long integer division yields an integer of the same type; the result is that of mathematical division with the `floor' function applied to the result.
So, first the arguments are converted to a common type, in this case float. Then the division is made. Then the 'floor' function is applied. Result: 3.0.
So yes, it's intentional.
Regards,
-- . Facundo . Blog: http://www.taniquetil.com.ar/plog/ PyAr: http://www.python.org/ar/
_______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/guido%40python.org
-- --Guido van Rossum (home page: http://www.python.org/~guido/)
participants (4)
-
Facundo Batista -
Fred L. Drake, Jr. -
Greg Ewing -
Guido van Rossum