Ich habe kürzlich bemerkt, dass int()
ein Float in Richtung 0 gerundet wird, während eine Ganzzahldivision einen Float in Richtung seines Bodens rundet.
zum Beispiel:
-7 // 2 = -4
int(-7/2) = -3
Ich habe die Dokumentation gelesen, in der Folgendes angegeben ist:
Klasse int (x, Basis = 10)
Gibt ein ganzzahliges Objekt zurück, das aus einer Zahl oder Zeichenfolge x aufgebaut ist, oder gibt 0 zurück, wenn keine Argumente angegeben sind. Wenn x eine Zahl ist, geben Sie x zurück. int (). Bei Gleitkommazahlen wird dies gegen Null abgeschnitten.
und:
Bodenteilung
Mathematische Division, die auf die nächste ganze Zahl abgerundet wird. Der Floor Division Operator ist //. Zum Beispiel ergibt der Ausdruck 11 // 4 2 im Gegensatz zu 2,75, die von float true Division zurückgegeben werden. Beachten Sie, dass (-11) // 4 -3 ist, da dies -2,75 nach unten gerundet ist. Siehe PEP 238.
Für mich erscheint es jedoch unlogisch, dass zwei ähnliche Operationen (Float-Division zu Integer) unterschiedliche Ergebnisse liefern sollten.
Gibt es eine Motivation für die Unterschiede zwischen den Funktionen?
Vielen Dank.