cs_BirD
Messages postés90Date d'inscriptionsamedi 23 novembre 2002StatutMembreDernière intervention28 avril 2010
-
10 nov. 2009 à 21:07
cs_BirD
Messages postés90Date d'inscriptionsamedi 23 novembre 2002StatutMembreDernière intervention28 avril 2010
-
11 nov. 2009 à 10:05
Hello tout le monde,
Dans un programme, je dois calculer une exponentielle. Petit tour sur google, je vois que la librairie math.h contient la fonction
float exp (float x );
. Donc je me dit nickel bleu ciel, je la prends tel quel et voila que mon programme ne me retourne pas du tout la valeur attendue.
Voici un extrait du code :
#include <math.h>
.
.
.
const float Kb = 1.38E-23; //constante de Boltzmann
float test = exp(-4/Kb);
cout << test << "\n";
Ça me retourne 0 alors que je m'attends a recevoir une valeur du type 0.373249849.
Je me suis penché du coté de la taille des valeurs. Il se trouve que -4/Kb = −2.898550725e+23 et les floats peuvent prendre des valeurs entre -3.4*10^-38 à 3.4*10^38.
En revanche, pour d'autres valeurs plus "simple" la fonction renvoie des résultats corrects.
cs_Lucky92
Messages postés180Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention16 août 20122 11 nov. 2009 à 07:59
Salut,
Moi ça me semble pas si mal comme résultat mathématique.
En tout cas, c'est sûrement pas 0.373249849.
Je suis pas un pro en thermo, mais je parierais bien sur le fait que ta formule est fausse ou incomplète.