Divisé par zéro: dépassement de capacité

Résolu
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 - 22 sept. 2005 à 15:19
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 23 sept. 2005 à 12:43
Salut

je dois faire la division suivante:
total=0
1/total, donc 1/0, ce qui donne l'infini, et donc dépassement de capacité.
j'ai essayé ceci:
if total=0 then total = 1
pour faire 1/1
mais ça ne marche pas.

merci d'avance

10 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 sept. 2005 à 16:14
0/1 <> 1/0
tu ne devrais pas avoir d'erreur
3
killman__37 Messages postés 25 Date d'inscription samedi 13 août 2005 Statut Membre Dernière intervention 5 avril 2006
22 sept. 2005 à 16:19
ca ca marche...
Sub main()
Dim total As Double
Dim calcul As Double


total = 0If total 0 Then total 1
calcul = 1 / total
MsgBox calcul
End Sub
3
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
22 sept. 2005 à 18:51
Si il y a dépassement de capacité, il faudrait peut être mieux s'arranger pour que le résultat soit différent de 1. (1/0 = +l'infini, 0/0 = indéfini, 0/1 = 0)

Sub main()
Dim total As Double
Dim calcul As Double

total = 0
If total = 0 Then
calcul = 999999999
else
calcul = 1 / total
endif

MsgBox calcul
End Sub
3
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
23 sept. 2005 à 12:43
1/0 est indéfini, mais 1/0,0000000000001= beaucoup.

Lim 1/x quand x->0 = +l'inini

Les PC arrondissent parfois à 0 des valeurs trops petites pour être représentées.

Faut compenser comme ont peut...
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 sept. 2005 à 15:46
salut,if total 0 then total 1 marche.
il faut juste penser à le placer AVANT ton calcul

quand à l'erreur, prend la calculatrice windows, et tape 1/0, tu verras bien .....
++
PCPT
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
22 sept. 2005 à 16:03
mais je t'assure bien que je l'ai placé avant, j'ai même vérifié avec des msgbox:
msgbox total = 0
if etc..
msgbox total = 1

calcul de 1/total = toujours autant KO

Ben sinon, 1/0 c'est bien l'infini, donc avec un integer qui s'arrête à 32 647, c'est bien normal que ca dépasse la capacité non ?
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
22 sept. 2005 à 16:07
ah en fait, il me fait 0/1 (ce qui peut arriver dans l'appli), ce qui fait zéro aussi, comme je l'ai vérifié avec msgbox, mais il me dit aussi dépassement de capacité..
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 sept. 2005 à 16:13
tu dois alors vérifier les 2 ;)
et l'erreur n'est pas due à "integer", 1/0 = impossible.... <> infini
PCPT
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
23 sept. 2005 à 11:30
je vais tester tout ça, je suis sur que ca marche mais en fait je cherchais une solution où je ne doive pas faire tout le calcul dans la condition car il s'agit de toute une série de print et je voulais éviter de doubler tout: une fois si total = 0, une fois si total <> 0.
merci de votre aide.
PS: sur ma calculatrice MAC, 1/0 = infini, je dois dire que la démonstration de cette division est bien loin dans ma mémoire..
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
23 sept. 2005 à 12:01
Honte sur moi ! en simplifiant très fort le problème pour le présenter ici, j'vais perdu de vue une variable qui devait être aussi conditionnelle. Toutes les solutions présentées ici sont donc correctes.
0
Rejoignez-nous