Bonjour,
J'ai créer une petite fonction qui calcul la valeur de e^{x} en utlisant la célèbre série :
e^{x} = 1 + x/1! + x²/2! + x³/3! ...
Je demande donc à l'utilisateur d'entrer un nombre ainsi que la précision qu'il souhaite, j'appel la fonction calculerExp qui calcul la valeur approchée et ensuite j'affiche ça sur la console.
Voici :
La fonction calculerExp fonctionne bien je pense (point du vue fonctionnel je veux dire) mais j'ai un petit soucis lorsqu'il s'agit d'afficher le résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 double nombre,resultat; int precision; cout << "\nEntrez le nombre dont vous voulez calculez l'exponentielle en base e : "; cin >> nombre; cout << "\nEntrez maintenant la precision desiree : "; cin >> precision; resultat = calculerExp(nombre,precision); cout << "\ne exposant " << nombre << " egale " << resultat << endl;
Lorsque je tente d'affiche une variable double avec cout ainsi par exemple :
Eh bien cout n'affiche que les 4 ou 5 premières décimales de mon nombre. Ca n'a l'air de rien comme cela mais l'ennui c'est qu'en plus de ça la réponse est arrondie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 double x = 5,89984234384248 cout >> double
Donc si j'ai : x = 5,456559 il m'affichera 5,45656 ce qui fait que comme j'ai une série avec pafois beaucoup de termes il y a une erreur de plus en plus grande ...
A titre d'exemple pour e^{5} = 148,413159 ... si je lui demande de la calculer avec 14 termes il me donne 153, ...![]()
Au début je pensais que ma fonction était erronée mais je me suis aperçu que non en la testant, il s'agit dont bien d'une erreur de gestion des nombres à virgule ...
Pouvez vous me dire comment résoudre mon problème (= comment géré efficacement de grands nombres à virgules ...) ?
merci![]()
Partager