Page d'accueilFindIt !Contact Cahier Java

Cahier Java

 Forum Java

Ce forum est dédié à l'ouvrage Bien programmer en Java 7, ainsi qu'aux éditions précédentes des Cahiers du Programmeur Java.
Utilisez-le pour toute demande d'information supplémentaire ou pour toute suggestion au sujet de ces ouvrages.
Pour les informations relatives au Cahier du programmeur Swing, merci d'utiliser le forum qui lui est dédié.
Vous pouvez consulter ces forums librement. Pour y participer, inscrivez-vous tout d'abord.

Sujets Messages récents Identification Inscription
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


Page d'accueilFindIt !ContactDébut de la page

© Copyrights 1997-2014 eTeks - Tous droits réservés

Cahier Java