Java中除数能否为0 |
您所在的位置:网站首页 › 在除法计算中0不能做什么 › Java中除数能否为0 |
Java中除数能否为0
在数学运算中运算除法的时候,相信大家心里都会绷起一根弦(至少会有这样的潜意识):除数不能为0。能这么想的程序员相信都是非常注重代码健壮性的,这是个好习惯,但是除数是不是一定不能是0呢? 在做整型除法的时候,除数是不能为0的,否则会报异常。如下面这句代码: int d = 2/0;执行的时候会报java.lang.ArithmeticException: / by zero 在做浮点数运算的时候,除数是可以为0的,如下面这句代码: float a = 5.0/0;这句话是不会报异常的,a的值为Infinity,表示无限大。 如果这样写: float a = 0.0/0;a的值为Nan,表示非数值。
在Float和Double类中定义了Infinity和Nan,以float为例: public static final float POSITIVE_INFINITY = 1.0f / 0.0f; public static final float NEGATIVE_INFINITY = -1.0f / 0.0f; public static final float NaN = 0.0f / 0.0f;这些值得定义有什么意义呢,个人理解是在某些算数运算中可以省略一些边缘的条件的判断。比如下面这句代码: Math.atan(a / b)a和b都是浮点数,此时就不用考虑b是不是为0了,当b为0的时候,无穷大的反正切值为π/2,该运算是有意义的,运算结果也正是如此,我们就不用把90°角拿出来单独考虑了。但是换成sin或者cos或者asin或者acos,无穷大就没有意义了, System.out.println(Math.sin(2.0/0)); 运算结果为NaN。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |