[Tutor] modulo

Steven D'Aprano steve at pearwood.info
Mon Oct 8 01:12:06 CEST 2012


Hello Esteban and welcome!

On 08/10/12 09:49, Esteban Izaguirre wrote:

> So, i undertand
> how modulo works when only positive numbers are used, but how does modulo
> determine, that, say -15 % 14 is equal to 13?

Think of modulo as almost exactly the same as "remainder after division".

When you say "17 % 5", 5 goes into 17 three times with remainder two, so
17 % 5 returns 2.

With negative numbers it works the same way, but with a twist: we could say
EITHER:

   a) 5 goes into -17 negative-three times with remainder negative-two;

   b) 5 goes into -17 negative-four times with remainder three.

Why? Because we can write either of these:

5*-3 + -2 = -17
5*-4 + 3 = -17

So we have a choice. In Python's case, the people who invented the language
chose the second one, b). That way the modulo is always positive or zero
and never negative, which is a useful thing to have.


So, back to your two examples:

-2*14 + 13 = -15
so fourteen goes into negative-fifteen -2 times, with 13 remaining.

= -20

-20 % 100 is 80, not 20 like you said:

-1*100 + 80 = -20
so 100 goes into negative-twenty -1 times, with 80 remaining.



-- 
Steven






  Or -20 % 100 is 20? I just
> don't get how modulo works, all explanations I've found online only seem to
> be in relation of how this applies to perl or something, can someone
> explain it to me?
>
>
>
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor


More information about the Tutor mailing list