web-dev-qa-db-fra.com

pourquoi f est placé après les valeurs float?

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?

63
ipkiss

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

56
Jigar Joshi

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.

  • Pour les littéraux entiers (int, long), la valeur par défaut est int . Pour des raisons évidentes.
  • Pour les littéraux à virgule flottante (float, double), la valeur par défaut est double . Parce que l'utilisation de double permet potentiellement une arithmétique plus sûre sur les valeurs stockées.

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.

48
Perception

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

23
Peter Lawrey

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.

4
kundan bora

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.

1
Confuse

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

0
BRjava