That is not true. Any constant you assign to a variable of type float will be properly cast.
On the other hand, initialization to the result of some computation could result in integer math being used prior to the cast. Is that what you meant?
float val = 1000 / 5000 + 2; // value assigned will be 2.0