Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

depassement de capacité

4 réponses
Avatar
pierref
Bonjour,

j'ai l'erreur "depassement de capacit=E9" pour ce bout de=20
code :

table!champ1 =3D (b - 1) * v / t

(champ1, b, v et t sont des double)

Merci de m'aider !

a+

4 réponses

Avatar
Raymond [mvp]
Bonjour.

mets un point d'arret sur la ligne et vérifies les valeurs de tes champs. si
t=0 , ça donne quoi ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"pierref" a écrit dans le message de
news:34b201c42937$5bf7e7d0$
Bonjour,

j'ai l'erreur "depassement de capacité" pour ce bout de
code :

table!champ1 = (b - 1) * v / t

(champ1, b, v et t sont des double)

Merci de m'aider !

a+
Avatar
Eric
bonjour pierref

j'ai déja eu ce problème sur une progressbar en vb6, mon calcul etait du
genre où TempsFin et TempsDebut étaient définies en Single.

valeur = (TempsFin-TempsDebut)*100/180 où TempsFin et TempsDebut étaient
des valeurs retournées par la fonction Timer en VB (des millisecondes)

Pour contourner l'obstacle, j'ai mis la solution suivante:
valeur = 100*(TempsFin-TempsDebut)/180 et je n'ai plus eu de message
d'erreur!

Et dire que je croyais à la commutativité ???

A+
Eric




"pierref" écrivait news:34b201c42937
$5bf7e7d0$:

Bonjour,

j'ai l'erreur "depassement de capacité" pour ce bout de
code :

table!champ1 = (b - 1) * v / t

(champ1, b, v et t sont des double)

Merci de m'aider !

a+



Avatar
pierref
bien joué.

j'ai fait effectivement comme ca.

y'a un cas dans la boucle ou t=0.
du coup je teste t avant de faire le calcul.

(je pensais au depart que la solution pouvait etre
d'utiliser cdbl())
encore une prise de tete pour pas grand chose.

vivement le we...
et merci !

-----Message d'origine-----
Bonjour.

mets un point d'arret sur la ligne et vérifies les
valeurs de tes champs. si

t=0 , ça donne quoi ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"pierref" a écrit
dans le message de

news:34b201c42937$5bf7e7d0$
Bonjour,

j'ai l'erreur "depassement de capacité" pour ce bout de
code :

table!champ1 = (b - 1) * v / t

(champ1, b, v et t sont des double)

Merci de m'aider !

a+


.



Avatar
Daniel Carollo
Bonjour Eric (et Pierre)!

Commutativite, oui, mais en changeant l'ordre des operandes de votre calcul,
vous mettez en jeu plus de choses que simplement la commutativite.

De memoire, la propriete "value" de la progessbar est soit un Byte, soit un
Int, donc avec une vleur maximum bien finie.

En faisant: valeur = (TempsFin-TempsDebut)*100/180, vous faites une
operation entre deux Single, qui peut vous donner un resultat assez grand.
Ce resultat, multiplie par 100 va etre encore plus grand. Le compilateur
reserve probablement une variable de type Int pour stocker ce resultat avant
de le diviser par 180, d'ou l'erreur de depassement de capacite.

Par contre, lorsque vous faites: valeur = 100*(TempsFin-TempsDebut)/180, de
par la valeur de 100, la variable intermediaire est probablement du type
Int, et une conversion s'effectue du resultat de la difference entre les
deux temps de Single vers Int, d'ou l'absence d'erreur...

Il faut faire attention aux variables qu'on utilise, mais aussi au types de
variables qu'on croit utiliser et des conversions implicites. Tout ca est
tres logique, une fois qu'on y pense...

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"Eric" wrote in message
news:
bonjour pierref

j'ai déja eu ce problème sur une progressbar en vb6, mon calcul etait du
genre où TempsFin et TempsDebut étaient définies en Single.

valeur = (TempsFin-TempsDebut)*100/180 où TempsFin et TempsDebut étaient
des valeurs retournées par la fonction Timer en VB (des millisecondes)

Pour contourner l'obstacle, j'ai mis la solution suivante:
valeur = 100*(TempsFin-TempsDebut)/180 et je n'ai plus eu de message
d'erreur!

Et dire que je croyais à la commutativité ???

A+
Eric




"pierref" écrivait news:34b201c42937
$5bf7e7d0$:

Bonjour,

j'ai l'erreur "depassement de capacité" pour ce bout de
code :

table!champ1 = (b - 1) * v / t

(champ1, b, v et t sont des double)

Merci de m'aider !

a+