You do not need the explicit cast, but it cannot hurt and it will make your code more readable.
I believe this is safe, mainly because the maximum float is much smaller than a possible int, so there should be no data loss.
Make sure your intention is truncating the decimal part of your float value rather than rounding.