depassement de capacité

Le
pierref
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+
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Raymond [mvp]
Le #5375811
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" 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+
Eric
Le #5375781
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" $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+



pierref
Le #5375721
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" 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+


.



Daniel Carollo
Le #5072581
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" 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" $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+






Publicité
Poster une réponse
Anonyme