bob gailer wrote:
On 1/10/2012 1:47 PM, Noah Hall wrote:
a % b is the remainder operator. It returns what's "left" after dividing a by b.
Not to beat a dead horse- but % is the modulo operator.

That depends on how you define "remainder" and "modulo". There is no definition agreed on by all people, and so we get into terminology disputes.

To a mathematician, "modulo operator" is meaningless. Modulo is a modifier to a statement, not an operator, and is written "mod" as in:

1 = 5*3 mod 7


It returns the residue class of the 2 operands. When a is positive this is the same as remainder, but not so for negative a.

"Remainder" is ambiguous for negative values. -7/5 could be given as -1 with -2 remainder, or as -2 with 3 remainder. One might define a remainder operation as returning a result:

- which is always positive
- with the sign of the divisor
- with the sign of the dividend
- which is closest to zero
- which is furthest away from zero

The last two require further variations, depending on how you resolve ties.

One might also define i%0 to be i, or as undefined. So by my count, there are at least 18 consistent ways to define a remainder/modulo operator.

A very few languages define two operators, or functions, e.g. Ada defines a rem operator which returns the remainder with the sign of the dividend and a mod operator which returns the remainder with the sign of the operator.


--
Steven
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to