2013-03-19 9 views

Antwort

22

Ganzzahlige Division wird immer abgerundet (in Richtung der negativen Unendlichkeit).

http://www.mathsisfun.com/numbers/images/round-up.gif

Plain oder lange ganzzahlige Division ergibt eine ganze Zahl von gleicher Art; Das Ergebnis ist das der mathematischen Division mit der Floor Funktion auf das Ergebnis angewendet.

http://docs.python.org/2/reference/expressions.html#binary-arithmetic-operations

 

Dies ermöglicht die Integer-Division und modulo (Rest, %) Operatoren x == (x/y)*y + (x%y) schön durch die Identität zu verbinden.

 

  floor (x) ist die größte ganze Zahl nicht größer als x.

+0

Es könnte sich lohnen, eine Notiz zu '(a // b) * b + a% b == a 'hinzuzufügen. – abarnert

+0

(+1) Das Bild ist großartig. Was die Formulierung betrifft, finde ich es weniger zweideutig zu sagen, dass "Runden in Richtung negativer Unendlichkeit" statt "Runden ablaufen". – NPE

+0

[Wikipedia] (http: //en.wikipedia.org/wiki/Modulo_operation # Remainder_calculation_for_the_modulo_operation) hat eigentlich eine ziemlich schöne Erklärung dafür, warum die meisten Sprachen (C90 ist eine bemerkenswerte Ausnahme) entweder gekürzte Division und Dividend-Zeichen modulo oder floored division und divisor-sign modulo haben. Entweder ist man vernünftig (wie es eine dritte Option mit immer positivem Modul ist), aber die Art, wie sich Python entschied, ist sowohl in der Zahlentheorie als auch in der praktischen Arithmetik gebräuchlicher. – abarnert

1

Integer Division nimmt (glaube ich) den Boden() von was auch immer Schwimmer herauskommt, mehr oder weniger.

Also das ist -2 für die erste Division und 1 für die zweite.