Because it is massaging an already internally defined
result, which may already be an integer in Python 2, so it stays an integer value, sans any decimal fraction, even while we have cast it as a float. As @systemcoder68263 alluded, cast one of numerator or denomiator, not the quotient.
For this reason, I harp on the retention of any counting numbers in the division. Those values or expressions that do not contain a variable are treated as their own type. An expression that contains a variable may be type cast arbitrarily without disrupting the logic and semantic flow of the program for a reader.
Maybe it's just me. I cringe when I see division by 2.0 or anything point zero. It's just too artificial. I'm glad that Python 3 got away from that and just returns floats, period, without our massaging them. It is now an imperative to declare integers. Finally we get to see the function when it literally applies.