2013-03-19 11 views

risposta

22

La divisione intera si arrotonda sempre verso il basso (verso l'infinito negativo).

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

normale o divisione intero lungo produce un valore intero dello stesso tipo; il risultato è quello della divisione matematica con la funzione floor applicata al risultato.

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

 

Ciò consente la divisione intera e modulo (resto, %) operatori per collegare piacevolmente attraverso l'identità x == (x/y)*y + (x%y).

 

  piano (x) è il massimo intero maggiore di x.

+0

Potrebbe valere la pena aggiungere una nota su '(a // b) * b + a% b == a'. – abarnert

+0

(+1) L'immagine è fantastica. Per quanto riguarda la formulazione, trovo meno ambiguo dire "giri verso l'infinito negativo" piuttosto che "arrotondare". – NPE

+0

[Wikipedia] (http: //en.wikipedia.org/wiki/Modulo_operation # Remainder_calculation_for_the_modulo_operation) in realtà ha una spiegazione abbastanza buona del perché la maggior parte delle lingue (C90 è un'eccezione notevole) hanno una divisione troncata e un modulo di segno di dividendo, o una divisione di pavimento e un modulo di segno di divisore. O uno è ragionevole (come una terza opzione, con modulo sempre positivo), ma il modo in cui Python ha scelto è più comune sia nella teoria dei numeri che nell'aritmetica pratica. – abarnert

1

La divisione in intero prende (credo) il floor() di qualsiasi oggetto uscente, più o meno.

Quindi -2 per la prima divisione e 1 per la seconda.

Problemi correlati