Ho notato di recente che int()
arrotonda un galleggiante verso 0, mentre la divisione intera arrotonda un galleggiante verso il suo piano.
per esempio:
-7 // 2 = -4
int(-7/2) = -3
Ho letto la documentazione che specifica:
classe int (x, base = 10)
Restituisce un oggetto intero costruito da un numero o da una stringa x oppure restituisce 0 se non viene fornito alcun argomento. Se x è un numero, restituisce x. int (). Per i numeri in virgola mobile, questo si tronca verso zero.
e:
divisione del pavimento
Divisione matematica che arrotonda per difetto all'intero più vicino. L'operatore divisione pavimento è //. Ad esempio, l'espressione 11 // 4 restituisce 2 in contrasto con 2,75 restituito da float true division. Si noti che (-11) // 4 è -3 perché è -2,75 arrotondato verso il basso. Vedi PEP 238.
Ma mi sembra illogico che 2 operazioni simili (divisione float in numero intero) debbano restituire risultati diversi.
C'è qualche motivazione per le differenze tra le funzioni?
Grazie.