Messages
du sujet
Interrogation sur les nombres ? |
mickey
Ville : Valence
Membre depuis : 4 févr. 2005
Messages : 7
|
4 févr. 2005 à 11:45
Hello à vous
je suis en train de lire sur cahier sur JAva (très bien conçu)
je suis actuellement dans le chapitre 4, les exemples de ce chapitre sont basés sur la ConvertisseurEuro
dans cette classe et les exemples justes à après dans le livre
l'auteur met la lettre "f" après un chiffre : exemple :
valeurFranc = valeurEuro * 6.55957f ;
ce "f" apparait plusieurs fois après des nombres au cours du chapitre 4
J'aurais donc aimé savoir ce qu'apportait ce "f" à la fin des nombres. parce que rien n'est dit à ce sujet dans le livre
d'avance merci et encore félicitations à Emmanuel Puybaret pour ce livre très didactique
Mickael --- "javaophile" amateur
|
Manu
Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
|
4 févr. 2005 à 19:46
> dans cette classe et les exemples justes à après dans le livre
> l'auteur met la lettre "f" après un chiffre : exemple :
> valeurFranc = valeurEuro * 6.55957f ;
Le f est utilisé pour indiquer qu'une valeur littérale contenant un point comme 6.55957 est de type float et non de type double comme c'est toujours le cas par défaut (voir en bas de page 25). En fait 6.55957f est équivalent à (float)6.55957
Dans votre cas, le compilateur refusera l'instruction "valeurFranc = valeurEuro * 6.55957;" (sans le f) si valeurFranc est de type float, car il considère qu'il y aurait perte de précision possible (voir page 356 "possible loss of precision"). Voici pourquoi :
- 6.55957 non suivi d'un f étant de type double, le compilateur décidera de convertir valeurEuro en double (si valeurEuro est de type float), pour pouvoir appliquer la multiplication entre double (la JVM ne sait pas multiplier un float par un double).
- le résultat de la multiplication de deux valeurs de type double étant de type double, son stockage dans la variable valeurFranc de type float ne peut être effectué que si ce résultat est reconverti en float. C'est tout à fait possible avec l'opérateur de cast (float) mais comme il est possible qu'il y ait perte de précision pendant ce cast, le compilateur refuse de le faire de son propre chef.
En conclusion, ce type d'instruction peut être corrigé d'une des façons suivantes :
valeurFranc = valeurEuro * 6.55957f;
valeurFranc = valeurEuro * (float)6.55957;
valeurFranc = (float)(valeurEuro * 6.55957);
...ou déclarer valeurFranc de type double
> d'avance merci et encore félicitations à Emmanuel Puybaret pour ce livre très didactique
Merci ! J'espère qu'il vous satisfera jusqu'au bout... --- Manu (moderator/modérateur)
|
mickey
Ville : Valence
Membre depuis : 4 févr. 2005
Messages : 7
|
21 mars 2005 à 09:42
merci beaucoup pour cet éclairage !!
mais il est vrai que si j'avais bien lu le tableau de la page 25, j'aurais vu a quoi servait le fameux "f" mea culpa !!
en tout cas je continue de progresser en java !
encore bravo pour ce très bon livre
Mickey --- "javaophile" amateur
|