Converting to ling int from long double
zazou
-
fiddy Messages postés 11653 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11653 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je suis entrain de réviser mon cours de programmation et j'ai une erreur que je n'avais encore jamais vue...
[Warning] converting to `long int' from `long double'
Savez vous de quoi il est question?
voici mon Code au cas où vous en avez besoin... :
#include <stdlib.h>
#include <stdio.h>
/* Ma Fonction convertisseur €-Fb*/
long double EuroFb ( int euro ){
return 40.3399 * euro;
}
/* Ma Fonction convertisseur €-Fb*/
long double FbEuro ( int Fb ){
return Fb / 40.3399;
}
/* Le corp du pgm */
int main(){
long EuroConvertir = 0;
long FbConvertit = 0;
long EuroConvertit = 0;
long FbConvertir = 0;
int choix = 0;
printf(" Pour convertir des Euro en Franc Belge taper [1]\n");
printf(" Pour convertir des Franc Belge en Euro taper [2]\n");
scanf("%i", &choix);
switch (choix)
case 1: system("cls");
printf("Entrez le montant en euro a convertir en Franc Belge\n");
scanf("%ld", &EuroConvertir);
FbConvertit = EuroFb(EuroConvertir);
printf("Cela fait: %iFb \n\n", FbConvertit);
case 2: system("cls");
printf("Entrez le montant en Fb a convertir en Euro \n");
scanf("%ld", FbConvertir);
EuroConvertit = FbEuro(FbConvertir);
printf("Cela fait: %i€ \n\n", EuroConvertit);
system("Pause");
return 0;
}
Merci de votre aide.
Bien à vous...
je suis entrain de réviser mon cours de programmation et j'ai une erreur que je n'avais encore jamais vue...
[Warning] converting to `long int' from `long double'
Savez vous de quoi il est question?
voici mon Code au cas où vous en avez besoin... :
#include <stdlib.h>
#include <stdio.h>
/* Ma Fonction convertisseur €-Fb*/
long double EuroFb ( int euro ){
return 40.3399 * euro;
}
/* Ma Fonction convertisseur €-Fb*/
long double FbEuro ( int Fb ){
return Fb / 40.3399;
}
/* Le corp du pgm */
int main(){
long EuroConvertir = 0;
long FbConvertit = 0;
long EuroConvertit = 0;
long FbConvertir = 0;
int choix = 0;
printf(" Pour convertir des Euro en Franc Belge taper [1]\n");
printf(" Pour convertir des Franc Belge en Euro taper [2]\n");
scanf("%i", &choix);
switch (choix)
case 1: system("cls");
printf("Entrez le montant en euro a convertir en Franc Belge\n");
scanf("%ld", &EuroConvertir);
FbConvertit = EuroFb(EuroConvertir);
printf("Cela fait: %iFb \n\n", FbConvertit);
case 2: system("cls");
printf("Entrez le montant en Fb a convertir en Euro \n");
scanf("%ld", FbConvertir);
EuroConvertit = FbEuro(FbConvertir);
printf("Cela fait: %i€ \n\n", EuroConvertit);
system("Pause");
return 0;
}
Merci de votre aide.
Bien à vous...
A voir également:
- Converting to ling int from long double
- Double ecran - Guide
- Whatsapp double sim - Guide
- Qwerty to azerty - Guide
- Double driver - Télécharger - Pilotes & Matériel
- Double appel - Guide
2 réponses
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 ...)
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
Tu t'abuses ;-))).
Pour les long doubles, il faut mettre %Lf