char c1 = 123; //Compiles fine
char c2 = 123456; //Error: cannot convert from int to char
Java è abbastanza intelligente per determinare se un numero intero è sufficientemente piccolo per essere convertito in un carattere. Perché non è in grado di convertire letterali in virgola mobile molto piccoli in un float ?. Ad esempio:char c = alcuni valori letterali interi potrebbero essere compilati ma float f = alcuni letterali in virgola mobile non verranno mai compilati. Perché?
float f1 = 0.3; //Error: cannot convert from double to float
float f2 = 0.3f; //Compiles fine
char c = qualche intero letterale potrebbe compilare ma float f = certo punto floating letterale sarà mai compilazione. Perché?
PS: So che una virgola mobile letterale è trattato come un doppio predefinita
possibile duplicato di [Java: Perché è necessario specificare una "f" in un valore letterale float?] (Http://stackoverflow.com/questions/14102955/java-why-do-you-need- to-specific-af-in-a-float-literal) – RealSkeptic
La mia domanda non riguarda la 'f' in letterali in virgola mobile. Riguarda come un tipo di dati più grande viene convertito in un tipo di dati più piccolo senza problemi in un caso (int a char, da 32 bit a 16 bit) mentre dà un errore di compilazione nell'altro caso (double to float, da 64 bit a 32 bit). Il letterale è abbastanza piccolo da essere adatto alla variabile float proprio come int era piccolo @ RealSkeptic –
La risposta è comunque in questa domanda - la risposta migliore non è quella accettata, però. – RealSkeptic