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 // 4
evaluates to 2 in contrast to the2.75
returned by float true division. Note that(-11) // 4
is-3
because that is-2.75
rounded 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?