¿Qué es flotar en Java?

102

Escribí este código:

float b = 3.6;

y me sale esto:

Error: problema de compilación no resuelto: 
    Falta de coincidencia de tipos: no se puede convertir de doble a flotante

¿Por qué? ¿Cuál es la definición de float?

t0mkaka
fuente
1
@Sneftel Eso no es un duplicado de esta pregunta. Esta pregunta pregunta por qué no se compila (a lo que la respuesta es 'debe agregar un fal literal'), mientras que la otra pregunta pregunta por qué debe agregar el f. Aunque están relacionados, no es un duplicado.
Mark Rotteveel
Consulte meta.stackexchange.com/questions/217401/… . Las respuestas a la pregunta vinculada son respuestas a esta pregunta.
Sneftel

Respuestas:

180

En Java, cuando escribe un número decimal como 3.6, se interpreta como un double. doublees un punto flotante IEEE 754 de precisión de 64 bits, mientras que floates un punto flotante IEEE 754 de precisión de 32 bits. Como a floates menos preciso que a double, la conversión no se puede realizar implícitamente.

Si desea crear un flotante, debe terminar su número con f(es decir:) 3.6f.

Para obtener más explicaciones, consulte la definición de tipos de datos primitivos del tutorial de Java .

Nicolas
fuente
40

Hazlo

float b= 3.6f;

Un literal de coma flotante es de tipo float si tiene como sufijo una letra ASCII F o f; de lo contrario, su tipo es doble y opcionalmente se le puede añadir como sufijo una letra ASCII D od

Jigar Joshi
fuente
¿Hay alguna forma de verificar si una cadena solo tiene un valor flotante?
MasterJoe
13

El caso es que los números decimales se duplican por defecto. Y dado que double no encaja en float, debe decirle explícitamente que define intencionalmente un float. Así que ve con:

float b = 3.6f;
Jan Zyka
fuente
8

En JAVA, valores como:

  1. 8.5
  2. 3.9
  3. (y así..)

Se asume como doble y no flotante .

También puede realizar un yeso para solucionar el problema:

float b = (float) 3.5;

Otra solución:

float b = 3.5f;

Carlos Sá
fuente