J'ai récemment remarqué que int()
arrondit un flotteur vers 0, tandis que la division entière arrondit un flotteur vers son plancher.
par exemple:
-7 // 2 = -4
int(-7/2) = -3
J'ai lu la documentation qui précise:
classe int (x, base = 10)
Retourne un objet entier construit à partir d'un nombre ou d'une chaîne x, ou retourne 0 si aucun argument n'est> donné. Si x est un nombre, retournez x. int (). Pour les nombres à virgule flottante, cela tronque vers zéro.
et:
division au sol
Division mathématique qui arrondit à l'entier le plus proche. L'opérateur de division de plancher est //. Par exemple, l'expression 11 // 4 est évaluée à 2 contrairement à 2,75 renvoyée par float true division. Notez que (-11) // 4 est -3 parce que c'est -2,75 arrondi vers le bas. Voir PEP 238.
Mais il me semble illogique que 2 opérations similaires (division flottante en entier) retournent des résultats différents.
Y a-t-il une motivation pour les différences entre les fonctions?
Je vous remercie.