101 votes

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

Je ne sais pas pourquoi f ou F est placé après des valeurs float dans Java ou d'autres langages? par exemple,

 float fVariable = 12.3f;
 

des caractéristiques autres que d'indiquer qu'il s'agit d'une valeur flottante?

86voto

Jigar Joshi Points 116533

Par défaut, 12.3 est un double littéral, il est donc préférable de demander au compilateur de traiter comme float il utilise 'f`

56voto

Perception Points 42290

Voyant que il ya seulement tellement de façons de représenter un nombre dans votre programme, les concepteurs de Java ont dû cherry pick et d'attribuer à chaque forme la plus commune de cas d'utilisation. Pour ces formes sélectionné par défaut, le suffixe qui indique le type exact est facultatif.

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

Ainsi, lorsque vous tapez 12 dans votre programme, c'est un int littérale, par opposition à l' 12L, ce qui est un long. Et lorsque vous tapez 12.3, c'est une double littérale, par opposition à l' 12.3F, ce qui est un float.

Alors, où est-il pertinent? Principalement dans le traitement des downcasts, ou le rétrécissement de conversions. Chaque fois que vous avez abattu un long int, ou un double à un flotteur, la possibilité de perte de données existe. Ainsi, le compilateur va vous forcer à indiquer que vous vraiment voulez effectuer la conversion restrictive, en signalant une erreur de compilation pour quelque chose comme ceci:

float f = 12.3;

Parce que 12.3 représente un double, vous devez convertir explicitement à un flotteur (essentiellement la signature sur le rétrécissement de conversion). Sinon, vous pouvez indiquer que le nombre est vraiment un flotteur, en utilisant le bon suffixe;

float f = 12.3f;

Donc trop de résumer, d'avoir à spécifier un suffixe pour les longs et des flotteurs est un compromis, la langue, les concepteurs ont choisi, afin d'équilibrer la nécessité de préciser ce qu'est exactement un certain nombre est, avec la souplesse de la conversion d'un nombre à partir d'un type de stockage à un autre.

28voto

Peter Lawrey Points 229686

float et double ne peut 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 il a moins de précision, 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
 

So 0.1 est la représentation la plus proche en double et 0.1f est la représentation la plus proche en float

6voto

kundan bora Points 1311

float fVariable = 12,3; c'est bien. mais lorsque vous utilisez uniquement la valeur float (sans identifiant) dans n'importe quelle 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.

1voto

BRjava Points 168

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 le spécifiez pas, la valeur est 0,23f (en particulier float), 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. Vérifie ça

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X