Converting to ling int from long double
Fermé
zazou
-
14 avril 2009 à 15:31
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 avril 2009 à 15:45
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 avril 2009 à 15:45
A voir également:
- Converting to ling int from long double
- Double ecran - Guide
- Whatsapp double sim - Guide
- Pc long a demarrer - Guide
- Double driver - Télécharger - Pilotes & Matériel
- Qwerty to azerty - Guide
2 réponses
jeangilles
Messages postés
816
Date d'inscription
samedi 21 juin 2008
Statut
Membre
Dernière intervention
17 juillet 2012
186
14 avril 2009 à 15:39
14 avril 2009 à 15:39
Dans tes scanf, tu mets des "%ld", qui correspondent à des long int
or tu les mets dans des variables de type long double !
il faut mettre des "%lf" (si je ne m'abuse ...)
or tu les mets dans des variables de type long double !
il faut mettre des "%lf" (si je ne m'abuse ...)
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
14 avril 2009 à 15:43
14 avril 2009 à 15:43
Salut,
Tout d'abord, pour les conversions les doubles sont largement suffisant. Pas besoin de long double.
Sinon long double n'est pas la même chose que long.
Donc lorsque tu fais : EuroConvertit = FbEuro(FbConvertir); le compilateur cherche à convertir le long double renvoyé par la fonction en long int (type d'EuroConvertit). Puisqu'il y a perte de précision, le cast n'est pas implicite. D'où l'avertissement. Il faut caster explicitement et tu n'auras plus l'avertissement.
Attention aussi à bien toujours mettre l'adresse de la variable dans tes scanf. Pour afficher un long double, il faut utiliser %Lf et non %i.
Mais, je te conseillerais de n'utiliser que des doubles partout.
Et enfin, n'oublie pas de mettre les break dans ton switch ainsi que les accolades.
Cdlt
Tout d'abord, pour les conversions les doubles sont largement suffisant. Pas besoin de long double.
Sinon long double n'est pas la même chose que long.
Donc lorsque tu fais : EuroConvertit = FbEuro(FbConvertir); le compilateur cherche à convertir le long double renvoyé par la fonction en long int (type d'EuroConvertit). Puisqu'il y a perte de précision, le cast n'est pas implicite. D'où l'avertissement. Il faut caster explicitement et tu n'auras plus l'avertissement.
Attention aussi à bien toujours mettre l'adresse de la variable dans tes scanf. Pour afficher un long double, il faut utiliser %Lf et non %i.
Mais, je te conseillerais de n'utiliser que des doubles partout.
double FbEuro(...) { ... } double EuroConvertir = 0; double FbConvertit = 0; double EuroConvertit = 0; double FbConvertir = 0; scanf("%lf", &EuroConvertir); printf("Cela fait: %fFb \n\n", FbConvertit);
Et enfin, n'oublie pas de mettre les break dans ton switch ainsi que les accolades.
switch(..) { case 1: ... break; case 2: ... break; default: ... }
Cdlt
14 avril 2009 à 15:45
Tu t'abuses ;-))).
Pour les long doubles, il faut mettre %Lf