我收到错误消息“它除以0”。在使用Netlogo的行为空间编译的分割过程中,如何避免“除以0”错误?这是一个运行时错误弹出消息。 “它除以0.观察者运行时的错误/通过程序GO调用,按下按钮'go'”以下是示例程序。变量“停止次数”表示停止在道路上停止的海龟的蜱数,“死亡数”表示死龟的数量。行为空间按每个滴答收集数据。当变量为0时,会发生被零除错误。有什么想法吗?谢谢。
globals [ Ans number-of-stop number-of-dead ]
set Ans precision((number-of-stop) / (number-of-dead))3
答案 0 :(得分:2)
在进行计算之前设置一个测试,例如(未测试):
set Ans ifelse-value (number-of-dead = 0)
[ -1 ]
[ precision((number-of-stop) / (number-of-dead))3 ]
如果分母为0,则将值设置为-1,如果测试失败,则仅将该值设置为分区(即,如果死数不为0)
答案 1 :(得分:2)
解决此问题的另一种方法是使用carefully
,它允许您在发生错误时执行备用操作。特别是如果有可能导致错误的条件,或者提前检查是非常繁琐的。
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
您也可以通过NetLogo告诉您错误是什么,如果有用的话。