2017-06-17 43 views
0

我收到一个错误,说“它除以0”。在使用Netlogo的行为空间进行编译的过程中,如何避免“除以0”的错误?这是一个运行时错误弹出消息。 “它被除以0.观察者运行时的错误/由程序GO调用,由按钮'去'调用”以下是示例程序。 “停车次数”变量意味着停止在道路上停留的海龟数量,“死亡数量”表示死亡海龟的数量。行为空间通过每次打勾来收集数据。当变量为0时,发生被零除错误。有什么想法吗?谢谢。Netlogo在使用行为空间编译的分解过程中,如何避免“除以0”错误?

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

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

回答

2

做计算之前只需设置一个试验中,例如(未测试):

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

这将值设置为-1,如果分母为0且仅做除法如果测试失败(也就是说,如果死亡数不为0)

+0

感谢您的建议。示例代码在我的模型中运行时没有任何问题。 – goodgest

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告诉你是什么错误,如果是有用的。

+0

谢谢你的另一种方法。这也正常运行。谢谢! – goodgest

相关问题