這是大多數(即使不是全部)語言的預期行爲。我只測試了AS3,Javascript和PHP。 AS3和JS給你Infinity,PHP給你false
(如果出現低級錯誤,PHP的前往處理程序)。你應該避免不惜一切代價除以0,因爲這根本不可能。大多數語言不希望阻止用戶除以0,因爲Infinity是實際值並且除以0的正確值,這就是爲什麼他們允許它。
你的錯誤是因爲你使用Infinity作爲你的循環檢查,這將永遠不會在你的循環中達成。
相反,使用條件來處理值爲0的可能性,因此,像:
function calculateRatio(x:Number, y:Number):Number {
if (y == 0) {
return 1; // or whatever to indicate an error
}
return x/y;
}
或
function calculateRatio(x:Number, y:Number):Number {
return x/(y == 0 ? 1 : y); // the value is still calculated, just makes sure y is not 0 at all times
}
只要確保任何時候你執行除法,你永遠除以0.在你的情況下,你的循環運行的次數是無限的。 Flash是單線程的,並且在腳本執行過程中會完全凍結。通常情況下,這種情況發生得非常快,最終用戶不會注意到它,但在您的情況下,它會凍結,直到時間結束。幸運的是,根據運行時版本的不同,Flash會在15秒或30秒結束腳本執行,因此在某些時候它應該會出錯。
不要除以零? – KevinDTimm
Primo:除非開發人員付出努力,否則通過更改組件的大小,您可能會在描述中注意到這一點。 Secundo:FlashPlayer可以如何分割0並將其轉換爲無限? – Pablito
究竟是什麼問題? – Brian