EXP(1230) = erreur de dépassement arithmétique !

amohammed Messages postés 7 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 1 février 2008 - 29 août 2007 à 20:12
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 29 août 2007 à 23:01
Bonjour,

Le résultat de l'execution de la requête: Select EXP(1230) est le message d'erreur suivant:

Une erreur de dépassement arithmétique s'est produite lors de la conversion de expression en type de données float.

Et le résultat de EXP(-1230) est 0 !!!

Ce n'est qu'un exemple bien sûr !

Quelqu'un aurait une explication ?
En fait, j'ai une procédure stockée qui calcule l'exponentiel d'une expression dont la valeur peut aller jusqu'à des milliers !

Y'a t-il un moyen d'éviter cette contrainte ????

Bien merci d'avance.

4 réponses

Arnal88 Messages postés 96 Date d'inscription samedi 21 octobre 2006 Statut Membre Dernière intervention 25 avril 2009
29 août 2007 à 20:26
Euh...
C'est un peu grand quand même !

D'après ma calculatrice :
e^1230 = 1.52 * 10^534 !!!
Ca fait des milliards de milliards de milliards... bref aucun type en VB ne peut contenir un nombre aussi grand !

Les types Double ou Décimal (les plus grands) s'arrêtent à 10^28 !!


Faudra trouver autre chose...
0
Arnal88 Messages postés 96 Date d'inscription samedi 21 octobre 2006 Statut Membre Dernière intervention 25 avril 2009
29 août 2007 à 20:30
Erreur de ma part :

Il faut que tu déclare ta variable en tant que Double
Elle peut aller jusqu'à 1,797693 * 10^308
0
Arnal88 Messages postés 96 Date d'inscription samedi 21 octobre 2006 Statut Membre Dernière intervention 25 avril 2009
29 août 2007 à 20:32
Donc après un rapide calcul, tu ne peux pas aller au delà de EXP(709)

Voilà...
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
29 août 2007 à 23:01
salut,

et F1, tu n'as pas la touche ??

En vb6, voilà ce que me dit MSDN :

Renvoie une valeur de type Double indiquant la valeur de e (base des logarithmes népériens) élevé à une puissance.

Syntaxe

Exp(number)

L'[javascript:hhobj_4.Click() argument]number peut contenir une valeur de type [javascript:hhobj_5.Click() Double] ou toute [javascript:hhobj_6.Click() expression numérique] valide.

Remarques

Si la valeur de l'argument number est supérieure à 709,782712893, une erreur se produit. La [javascript:hhobj_7.Click() constante]e est environ égale à 2,718282.

Note   La fonction Exp, qui est la fonction réciproque de la fonction Log, est parfois désignée par l'expression "antilogarithme".

@++

<hr width="100%" size="2" />( Nouveau forum : Exclusivement Office & VBA/STRONG>
0
Rejoignez-nous