算术异常:/ by零仅适用于Java中的整数

时间:2014-07-22 04:15:32

标签: java exception casting floating-point integer

为什么在将数字除以零时有这样不同的答案:

我的代码:

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)完成时不同。为什么呢?

1 个答案:

答案 0 :(得分:5)

来自JLS §15.17.2

  
      
  • 将零非零有限值除以零会产生有符号无穷大。该标志由上述规则决定。
  •   

除了:

  

如果整数除法中除数的值为0,则a   抛出ArithmeticException。