2017-06-17 364 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

相關問題