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?



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 .


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


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;

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;

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.