They have different behaviours.
a//b rounds down, so 5//-2 == -3.
int(a/b) rounds towards zero, so int(5/-2) == -2
Edit to add: I just realized something important! a/b always produces a float. If a is too large for the quotient to be represented by a float (i.e, the result is greater than about 10^308), then a/b will fail with an OverflowError. This does not happen with a//b. Observe:
>>> int(10**1000/3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: integer division result too large for a float
>>> 10**1000//3
333333333333333333333333333333333333333333333333333...
Additionally, the floating point number resulting from the division will have rounding errors. Beyond about 2^53, 64-bit floating point numbers cannot accurately represent all integers, so you will get incorrect results:
>>> int(10**22/3)
3333333333333333508096
>>> 10**22//3
3333333333333333333333
x/ywill have limited precision so they are not equivalent.x = -3andy = 2.