float is 32 bits and long is 64 bits but
storage mechanism is not same
try
System.out.print(Float.MAX_VALUE);
System.out.print(Long.MAX_VALUE);
or
float f=Long.MAX_VALUE;
System.out.println(f); // exponent is 18
System.out.println(Float.MAX_VALUE); // exponent is 38
float uses IEEE754 storage mechanism hence can store number larger in magnitude than long.
word magnitude is more important.
hope this helps and correct me if I am wrong
bye.