public class Computer {
double c ;
public void div(double a,double b){
try{
c = a/b;
}
catch(NumberFormatException e){
e.printStackTrace();
System.out.println("格式化数据异常。");
}
catch(ArithmeticException e){
e.printStackTrace();
System.out.println("出现算术异常。");
}
catch(Exception e){
e.printStackTrace();
System.out.println("出现其他异常。");
}
System.out.println("两个数的商是:"+c);
}
}
public class test {
public static void main(String[] args) {
Computer c = new Computer();
c.div(0,0);
}
}
运行结果
两个数的商是:NaN
为什么没有抓住异常呢?
NaN的意思是不存在,无意义.
double中的0不是真正的0或0.0 而是一个很长的,可能是0.000000000001或其它,所以一个正数除以0.0结果就得很大很大。负数除以0.0, 0.0/0.0 一样道理。 浮点数是使用二进制数据的科学计数法表示,所以不可能精确表示一个浮点数
谢谢