爲什麼會有如此不同的答案上劃分數由零:算術異常:/零隻適用於整數中的Java
我的代碼:
class Test {
public static void main(String[] args){
int a = (int)(3/0.0F);
System.out.println(a);
System.out.println(3/0.0F);
System.out.println(3/0);
}
}
輸出:
2147483647
Infinity
Exception in thread "main" java.lang.ArithmeticException:/by zero
每我用一個整數(byte,short,int,long)來分割一個數字,它會拋出ArithmeticException,而用實數(float,double)完成時則不是這種情況。爲什麼?
因爲在這種情況下浮點被設計爲返回NaN。這是一個帶外價值。整數沒有帶外值,因此需要例外。 – EJP
如果您不知道OP - NaN代表「不是數字」。 – csmckelvey
@EJP - 我想知道他們爲什麼在零除零的情況下對浮動和整數有不同的規則。 –