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 :

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;
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.

Lorsque je tente d'affiche une variable double avec cout ainsi par exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
double x = 5,89984234384248
cout >> double
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.

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