Pourquoi Java implicitement (sans cast) convertir un `long` pour un `float`?

À chaque fois que je crois que je comprends sur le casting et les conversions, j'ai trouver un autre comportement étrange.

long l = 123456789L;
float f = l;
System.out.println(f);  //outputs 1.23456792E8

Étant donné qu'un long a une plus grande profondeur de bits qu'un float, je m'attends à ce qu'un cast explicite serait nécessaire pour que cette compilation. Et il n'est pas surprenant, nous voyons que nous avons perdu de la précision dans le résultat.

Pourquoi est une fonte pas nécessaire ici?

InformationsquelleAutor Eric Wilson | 2009-08-18