项目场景:
一个整数除以0.0结果为整形或double形式结果是不一样的。
一个double0.0除以一个0.0结果也是不确定的。
问题描述
public void method1() {
int i = 10;
int j1 = i / 0; //报错
double j = (double)i / 0.0; //返回一个极大值Inf
System.out.println(j);
double d1 = 0.0;
double d2 = d1 / 0.0;
System.out.println(d2); //返回一个Nan
}
原因分析:
这个原因是由于jvm的规定:
- 整形除以0,直接报错,因为无法得到极大值,所有导致运算结果溢出
- 对于浮点数来说,也是无法获得极大值的,直接溢出,但是返回一个无穷大inf,而不报错。
- 而对于浮点除以浮点数,结果可能是1可以是无穷大,而没用明确的定义,因此返回NaN