2014-02-09 39 views
3

今天早些時候我注意到了一些奇怪的事情。我正在編寫一些應該在複雜象限中製作圖表的代碼。無論如何,我輸入int i = 1/0;,它不會編譯。當我將代碼更改爲double i = 1.0/0.0;時,代碼編譯得很好。當我運行代碼時,它給出了一個錯誤/ 0。我期待着那個......但是爲什麼在使用雙精度而不是整數時它編譯得很好?我正在使用Blue J IDEJava與數學的「錯誤」 - int vs Double

+1

他們都編譯對我很好,和INT版本拋出一個錯誤,這是因爲據我所知預期行爲。你確定你沒有把它們混淆在你的腦海中嗎? – Vitruvius

+0

我認爲更好的解釋可以在這裏找到:http://stackoverflow.com/questions/2381544/why-doesnt-java-throw-an-exception-when-dividing-by-0-0 –

+0

第三個問題: http://stackoverflow.com/questions/21380499/is-this-declaration-possible/21380590 – Radiodef

回答

4

int值除以零將導致ArithmeticException,因此表達式1/0是非法的。

除以零一個double值的結果是無窮大NaN*,所以表達式1.0/0.0是合法的。


*)查看t_over的評論的細節:

+1

只需添加..除以0.0的負數等於負的無窮大,並將零除零導致Double.NaN –

+0

謝謝@t_over我讚賞額外的澄清:) – ChriskOlson