Qu'est-ce que float en Java?

102

J'ai écrit ce code:

float b = 3.6;

et j'obtiens ceci:

Erreur: problème de compilation non résolu: 
    Incompatibilité de type: impossible de convertir de double en float

Pourquoi? Quelle est la définition de float?

t0mkaka
la source
1
@Sneftel Ce n'est pas un double de cette question. Cette question demande pourquoi elle ne se compile pas (à laquelle la réponse est «vous devez ajouter un a fau littéral»), tandis que l'autre question demande pourquoi vous devez ajouter le f. Bien qu'ils soient liés, ce n'est pas un doublon.
Mark Rotteveel
Voir meta.stackexchange.com/questions/217401/… . Les réponses à la question liée sont des réponses à cette question.
Sneftel

Réponses:

180

En Java, lorsque vous tapez un nombre décimal comme 3.6, il est interprété comme un double. doubleest une virgule flottante IEEE 754 de précision 64 bits, tandis floatqu'une virgule flottante IEEE 754 de précision 32 bits. Comme a floatest moins précis qu'undouble , la conversion ne peut pas être effectuée implicitement.

Si vous souhaitez créer un flottant, vous devez terminer votre numéro par f(c'est-à-dire:) 3.6f.

Pour plus d'explications, consultez la définition des types de données primitifs du didacticiel Java .

Nicolas
la source
40

Fais-le

float b= 3.6f;

Un littéral à virgule flottante est de type float s'il est suffixé d'une lettre ASCII F ou f; sinon son type est double et il peut éventuellement être suffixé avec une lettre ASCII D ou d

Jigar Joshi
la source
Existe-t-il un moyen de vérifier si une chaîne n'a qu'une valeur flottante?
MasterJoe
13

Le fait est que les nombres décimaux doublent par défaut. Et comme double ne rentre pas dans float, vous devez dire explicitement que vous définissez intentionnellement un float. Alors allez-y avec:

float b = 3.6f;
Jan Zyka
la source
8

En JAVA, des valeurs telles que:

  1. 8,5
  2. 3,9
  3. (etc..)

Est supposé double et non flottant .

Vous pouvez également effectuer un casting pour résoudre le problème:

float b = (float) 3.5;

Une autre solution:

float b = 3.5f;

Carlos Sá
la source