Long have 8 bytes in Java. Float have 4 bytes
Why I can do:
long a = Long.MAX_VALUE;
float b = a;
Instead of:
long a = Long.MAX_VALUE;
float b = (float) a;
The result is:
9223372036854775807 <-- LONG
9223372036854776000,000000 <-- float
So why If I lost precision I dont have to say explicite cast '(float)' ?