public class Test{
public static void main(String args[]){
double i = 9;
try{
i = i/0;
System.out.println(i);
}catch(Exception e){
System.out.println("除数不能为0!");
}
    }
}

解决方案 »

  1.   

    Infinity 无穷大计算机不能准备计算浮点数的,0自动类型转换为浮点数后应该用一个很接近0的小数表示,结果溢出,用Infinity表示
      

  2.   

    当然可以了,如果编译器check被除数不能为零的话,那么就会将程序的设计范围限定的很死。
    因为有很多程序,当被除数为0的时候,它要在异常中处理操作。
    就算是编译器可以check被除数不能为零。但是被除数是个变量的话,编译器就不能确定了。
      

  3.   


        看漏了,没看清。double,我以为LZ想说任意类型的时候,为什么编译器不检查被除数为0。
         OK. double和float的被除数都可以为0的原因是java中有三个特殊的浮点类型,就是NAN,负无穷大和无穷大。用来表示浮点型操作出错或者是溢出的某些情况。比如负数的平方根就会是NAN