表达式1.0 / 0.0将返回什么?它会抛出异常吗?任何编译时错误?

表达式1.0 / 0.0将返回什么?它会抛出异常吗?任何编译时错误?

这个问题,我还之前没想过,刚才实验了下...

image.png

我们来分析下:

我们知道,在整型运算中,除数是不能为0的,否则直接运行异常。但是在浮点数运算中,引入了无限这个概念,我们来看一下Double和Float中的定义。

Double:

public static final double POSITIVE_INFINITY = 1.0 / 0.0;

public static final double NEGATIVE_INFINITY = -1.0 / 0.0;


Float:

public static final float POSITIVE_INFINITY = 1.0f / 0.0f;

public static final float NEGATIVE_INFINITY = -1.0f / 0.0f;

因为double里面没有完完全全的正儿八经的0,你看到的0,实际上可能是0.0000000000000...1,n个0之后忽然出来个1,那么就相当于除以一个最小的数,那么得到的值就会无穷大。然后无穷就是这么来的。