double d=1.0/0.0;
输出为Infinity
double d=1/0;
输出为ArithmeticException
。
这两者有什么区别? Infinity的含义是什么?
答案 0 :(得分:6)
第一个案例被视为double的一个分区,后一个案例被视为int的一个分区,因此是ArthimeticException。
这是无限意味着什么
http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#POSITIVE_INFINITY
双精度和浮点数的划分符合浮点匹配的IEEE 754标准,不应该抛出异常。
答案 1 :(得分:0)
在数学上,除零是不确定的,尽管它可以被宽泛地视为无穷大。 (更严格一点,对于x的任何值,它都是大于x的数字。)
IEEE754浮点双(由Java使用)具有无穷大的表示。这是1.0 / 0.0的结果。从这个意义上讲,1.0 / 0.0是可计算的,因为它发生在浮点运算中。
整数类型没有无穷大的表示,因此抛出异常。 1 / 0
以整数运算计算。
答案 2 :(得分:0)
浮点数有一种代码“无穷大”的方法。因此,无穷大是双变量的有效值。整数变量没有此选项。因此抛出异常。