Je ne sais pas pourquoi f ou F est placé après des valeurs float en Java ou dans d'autres langages? par exemple,
float fVariable = 12.3f;
des caractéristiques autres que d'indiquer qu'il s'agit d'une valeur flottante?
par défaut, 12.3
est double
littéral. Il est donc utile d'indiquer au compilateur de le traiter comme float
explicitement -> il utilise f
ou F
Comme il n’existait que de nombreuses façons de représenter un nombre dans votre programme, les concepteurs de Java ont dû sélectionner et affecter chaque formulaire au cas d’utilisation le plus courant. Pour les formulaires sélectionnés par défaut, le suffixe indiquant le type exact est facultatif.
Ainsi, lorsque vous tapez 12
dans votre programme, c’est un int littéral, par opposition à 12L
, qui est un long . Et lorsque vous tapez 12.3
, c'est un double littéral, par opposition à 12.3F
, qui est un float .
Alors, où est-ce pertinent? Principalement dans la gestion des downcasts ou des conversions restreintes. Chaque fois que vous abaissez un long sur un entier, ou un double sur un float, la possibilité de perte de données existe. Ainsi, le compilateur vous obligera à indiquer que vous vraiment voulez effectuer la conversion de rétrécissement, en signalant une erreur de compilation pour quelque chose comme ça:
float f = 12.3;
Parce que 12.3 représente un double, vous devez explicitement le convertir en float (en signant la conversion restreinte). Sinon, vous pouvez indiquer que le nombre est réellement un nombre flottant, en utilisant le suffixe correct;
float f = 12.3f;
Pour résumer, il faut spécifier un suffixe pour longs et floats est un compromis que les concepteurs de langage ont choisi, afin d’équilibrer le besoin de spécifier exactement ce qu’est un nombre, avec la possibilité de convertir des nombres d’un type de stockage à un autre.
float
et double
ne peuvent fournir que des valeurs de représentation approximatives pour certaines valeurs. par exemple. 12,3 ou 0,1
La différence est que float n’est pas aussi précis (car moins précis, car plus petit)
par exemple.
System.out.println("0.1f == 0.1 is " + (0.1f == 0.1));
System.out.println("0.1f is actually " + new BigDecimal(0.1f));
System.out.println("0.1 is actually " + new BigDecimal(0.1));
empreintes
0.1f == 0.1 is false
0.1f is actually 0.100000001490116119384765625
0.1 is actually 0.1000000000000000055511151231257827021181583404541015625
Donc, 0.1
est la représentation la plus proche dans double
et 0.1f
est la représentation la plus proche dans float
float fVariable = 12,3; c'est bien. mais lorsque vous utilisez uniquement la valeur float (sans identifiant) dans une expression, vous devez indiquer au compilateur que la valeur est float, nous utilisons donc le suffixe "f" après la valeur. Exemple
float fl = 13f/5f;
ici 13 et 5 sont des valeurs flottantes.
Pendant la compilation, tous les nombres à virgule flottante (nombres avec virgule décimale) doublent par défaut.
Par conséquent, si vous ne voulez pas que votre nombre double et qu'il le veuille simplement comme flottant, vous devez explicitement dire au compilateur en ajoutant un f ouFà la fin de la constante littérale.
Float est une virgule flottante IEEE 754 32 bits simple précision et Double est une virgule flottante IEEE 754 64 bits double précision. Lorsque vous utilisez une valeur avec des points décimaux et que vous ne spécifiez pas, la valeur est égale à 0.23f (flottante en particulier), Java l'identifie comme un double.
Pour les valeurs décimales, le type de données double est généralement le choix par défaut de Java . Cochez cette case