double d = 1/0.0 vs double d = 1/0

Num*_*tor 3 java double infinity

double d=1/0.0;
    System.out.println(d);
Run Code Online (Sandbox Code Playgroud)

它打印Infinity,但如果我们将编写double d=1/0;并打印它,我们将得到这个例外:Exception in thread "main" java.lang.ArithmeticException: / by zero at D.main(D.java:3)为什么Java在一种情况下知道潜水为零是无穷大但是对于int 0它没有定义?在这两种情况下,d都是双倍的,在两种情况下,结果都是无穷大.

Dav*_*nan 14

浮点数据类型具有保留的特殊值以表示无穷大,而整数值则不保留.

在你的代码中1/0是一个整数除法,当然,它失败了.然而,1/0.0是一个浮点除法,因此导致Infinity.