I have recently noticed that int() rounds a float towards 0, while integer division rounds a float towards its floor.
for instance:
-7 // 2 == -4
int(-7/2) == -3
I have read the documentation which specifies:
class int(x, base=10)
Return an integer object constructed from a number or string x, or return 0 if no arguments are >given. If x is a number, return
x.__int__(). For floating point numbers, this truncates towards zero.
and:
floor division
Mathematical division that rounds down to nearest integer. The floor division operator is
//. For example, the expression11 // 4evaluates to 2 in contrast to the2.75returned by float true division. Note that(-11) // 4is-3because that is-2.75rounded downward. See PEP 238.
But it seems illogical for me that 2 similar operations (float division to integer) should return different results.
Is there any motivation for the differences between the functions?