¿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?



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 .


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


¿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;

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;

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.