overflow bien étrange...

solquagerius

XLDnaute Junior
Bonjour,

Je me casse la tête sur une ligne étrange...
Dans un module de classe j'écris tout bêtement dans une fonction :
a = 343 * 233
et sur cette ligne j'ai un overflow... a est déclarée en Long, j'ai aussi essayé en double, mais rien n'y fait.
Il plante dès que la multiplication dépasse 32 768, pourtant quand je met directement a = 40 000 par exemple, ca marche bien.

J'ai pas trouvé de post sur ce pb dans le forum, pourtant j'imagine que ce problème doit être connu.

Merci.
 

nolich

XLDnaute Occasionnel
Re : overflow bien étrange...

Bonjour solquagerius, bonjour à toutes et à tous :)

solquagerius à dit:
Je me casse la tête sur une ligne étrange...
Dans un module de classe j'écris tout bêtement dans une fonction :
a = 343 * 233
et sur cette ligne j'ai un overflow... a est déclarée en Long, j'ai aussi essayé en double, mais rien n'y fait.
Il plante dès que la multiplication dépasse 32 768, pourtant quand je met directement a = 40 000 par exemple, ca marche bien.

Ton problème est un simple cas de type de données :

=> a est long et a=40000 est correct, mais quand tu écris a = 343 * 233, XL donne le type Integer à 343 et 233, il effectue la multiplication et BING ! Overflow !!! En fait, la conversion en type Long ne se fait qu'après la multiplication d'où l'erreur.

La seule solution est de forcer le type des contantes ainsi :

a = 343& * 233& , ainsi toutes tes données sont de type Long et la multiplication ne posera plus de pb.

En espérant avoir été clair :rolleyes:

@+

EDIT : re mromain :)
 
Dernière édition:

Discussions similaires

Réponses
11
Affichages
612

Statistiques des forums

Discussions
312 538
Messages
2 089 403
Membres
104 160
dernier inscrit
dqldq