Quote

Implicitly converting a large integral type to a floating-point type preserves magnitude but may occasionally lose precision. This is because floating-point ypes always have more magnitude than integral types, but may have less precision. Rewriting our example with a larger number demonstrates this:

int i1 = 100000001; float f = i1; int i2 = (int)f;

I understand that explicit casts will result in data loss in some way. What I don't understand is how magnitude and precision actually work in this case. Could anyone shed some light on this?