Modul (%) in python not like in C?
Bryan Olson
fakeaddress at nowhere.org
Mon Sep 10 06:09:34 EDT 2007
Dennis Lee Bieber wrote:
> The best answer is probably to be found from the definition of
> divmod()
The divmod() function is one of those little delights that reminds
me why I love Python, but I do not think it answers the question
here. The definition of divmod() references the '%' operation, and
not the other way around.
http://docs.python.org/lib/built-in-funcs.html
http://docs.python.org/ref/binary.html
>>>> divmod(70, 6)
> (11, 4)
>>>> 6*11 + 4
> 70
>>>> divmod(-70, 6)
> (-12, 2)
>>>> 6 * -12 + 2
> -70
Also:
>>> divmod(70, -6)
(-12, -2)
>>> -6*-12 + -2
70
>>> divmod(-70, -6)
(11, -4)
>>> -6*11 + -4
-70
> Or in general terms
>
> (a, b) = divmod(x, y)
> x = y * a + b
> IOWs, the definition of modulo, and the definition of integer division,
> are linked...
Right. Thus given integers x and y, y!=0, Python and C agree:
x == (y * (x / y)) + (x % y)
The disagreement is how integer division rounds. In C, integer
division rounds toward zero. In Python, integer division rounds
downward.
--
--Bryan
More information about the Python-list
mailing list