Divisé par zéro: dépassement de capacité [Résolu]

Signaler
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
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

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
0/1 <> 1/0
tu ne devrais pas avoir d'erreur
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
25
Date d'inscription
samedi 13 août 2005
Statut
Membre
Dernière intervention
5 avril 2006

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
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
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
1
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 ?
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
1
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é..
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
tu dois alors vérifier les 2 ;)
et l'erreur n'est pas due à "integer", 1/0 = impossible.... <> infini
PCPT
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
1
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..
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
1
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.