2017-06-17 4 views
0

Je reçois une erreur disant "Il divise par 0". Comment puis-je éviter l'erreur "divisant par 0" pendant le processus de division compilant avec l'espace Comportement de Netlogo? Ceci est un message contextuel d'erreur d'exécution. "Il est divisé par 0. Erreur lors du fonctionnement de l'observateur/Appelé par la procédure GO, Appelé par le bouton" go "" Ce qui suit est un exemple de programme. La variable "nombre d'arrêts" signifie que le nombre de tiques lors de l'arrêt des tortues s'est arrêté sur la route, et "nombre de morts" signifie que le nombre de tortues mortes. L'espace de comportement collecte les données à chaque tick. Lorsque la variable est 0, l'erreur de division par zéro se produit. Y a-t-il des idées? Je vous remercie.Netlogo Comment puis-je éviter l'erreur "divisant par 0" pendant le processus de division compilant avec l'espace Comportement?

globals [ Ans number-of-stop number-of-dead ] 

set Ans precision((number-of-stop)/(number-of-dead))3 

Répondre

2

vient de mettre un test avant de faire le calcul, par exemple (non testé):

set Ans ifelse-value (number-of-dead = 0) 
    [ -1 ] 
    [ precision((number-of-stop)/(number-of-dead))3 ] 

Ceci définit la valeur à -1 si le dénominateur est 0 et ne fait que la division si le test échoue (c'est-à-dire, si nombre-de-morts n'est pas 0)

+0

Merci pour le conseil. L'exemple de code s'exécute dans mon modèle sans aucun problème. – goodgest

2

Une autre approche de ce problème consiste à utiliser carefully, ce qui vous permet de prendre une autre action si une erreur se produit. Cela peut être utile en particulier s'il y a des conditions qui peuvent causer et des erreurs difficiles ou fastidieuses à vérifier à l'avance.

globals [ Ans number-of-stop number-of-dead ] 
to go 
set number-of-stop 10 
set number-of-dead 0 
carefully [set Ans precision((number-of-stop)/(number-of-dead))3] [set Ans -1] 
show Ans 
end 

Vous pouvez également utiliser NetLogo pour vous indiquer l'erreur, si c'est utile.

+0

Merci pour l'autre approche. Cela fonctionne aussi correctement. Je vous remercie! – goodgest