HOWTO · Python
Cosa significa // in Python
Questo tutorial dimostra cosa significa // in Python
In questa pagina
In Python, // è l’operatore di divisione con arrotondamento verso meno infinito: divide l’operando a sinistra per quello a destra e arrotonda il quoziente per difetto, verso meno infinito. Il tipo del risultato dipende dagli operandi. Due interi producono un int; se uno degli operandi è un float, il risultato è un float. L’operatore non si limita a eliminare il resto e non restituisce sempre un intero.
Significato della divisione con arrotondamento verso meno infinito in Python
La divisione con arrotondamento verso meno infinito individua il più grande intero minore o uguale al quoziente matematico, quindi rappresenta quel valore usando il tipo di risultato determinato dagli operandi. Per esempio, 10 / 3 è circa 3.333, quindi 10 // 3 è 3. È diverso dal troncamento, che elimina la parte frazionaria avvicinandosi allo zero. La distinzione è importante quando il quoziente è negativo.
Esegui questo esempio:
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
quotient = 10 // 3
print(quotient, type(quotient).__name__)
Comportamento di // con interi, numeri in virgola mobile e numeri negativi
Con operandi interi, // produce un quoziente intero. Se uno degli operandi è un float, il quoziente arrotondato per difetto è un float, anche quando il suo valore non ha una parte frazionaria. Conta anche il segno del quoziente: la divisione con arrotondamento verso meno infinito procede verso meno infinito, quindi un quoziente negativo non intero diventa più negativo.
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
print(7 // 2)
print(7.0 // 2)
print(-7 // 2)
Per -7 // 2, il quoziente matematico è -3.5 e l’arrotondamento per difetto dà -4. Il troncamento verso zero darebbe -3, che è un’operazione diversa. Con i float si applicano comunque le normali regole della rappresentazione in virgola mobile; // definisce la direzione dell’arrotondamento, ma non è una soluzione generale ai limiti di precisione dei numeri in virgola mobile.
Quando usare // invece di /
Usa // quando serve contare unità complete, per esempio scatole piene, gruppi o pagine. Se si distribuiscono 25 oggetti in scatole che ne contengono 6 ciascuna, il quoziente indica quante scatole si riempiono completamente. L’operatore modulo % restituisce gli oggetti rimasti; insieme, // e % descrivono quoziente e resto per gli operandi interi.
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
total_items = 25
items_per_box = 6
full_boxes = total_items // items_per_box
leftover_items = total_items % items_per_box
print(full_boxes, leftover_items)
Per la divisione ordinaria, usa /: restituisce il quoziente come float, anche quando entrambi gli input sono interi. Usa // quando il risultato desiderato è un quoziente arrotondato per difetto. Non sceglierlo solo per far apparire intero il risultato di un calcolo con float: se un operando è un float, anche il risultato sarà un float.
Domande frequenti sulla divisione con arrotondamento verso meno infinito in Python
// restituisce sempre un intero? No. Gli operandi interi producono un int, mentre un calcolo con un operando float produce un float.
Come si comporta con i numeri negativi? Arrotonda il quoziente per difetto, verso meno infinito. Quindi -7 // 2 è -4, anziché -3, che si otterrebbe troncando verso zero.
Qual è la differenza tra // e /? L’operatore / esegue una divisione ordinaria e restituisce un float. L’operatore // arrotonda il quoziente per difetto; il tipo del risultato dipende dagli operandi.
Quando è utile la divisione con arrotondamento verso meno infinito? È utile per contare unità complete, come scatole o gruppi. Se il calcolo richiede un risultato frazionario, usa /.