我只是好奇这个:
1/0
在Java中进行评估时,会发生以下异常:
线程"main"中的异常java.lang.ArithmeticException:/在Foo.main中为零(Foo.java:3)
但是1/0.0
被评估为Infinity
.
public class Foo {
public static void main (String[] args) {
System.out.println(1/0.0);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
Kri*_*ssy 11
1/0是两个int的除法,并抛出一个异常,因为你不能除以整数零.但是,0.0是double类型的文字,Java将使用浮点除法.IEEE浮点规范具有除以零的特殊值(除其他外),其中一个是double .Infinity.
如果您对细节感兴趣,浮点规范(通常含糊不清)在维基百科上有一个页面:http://en.wikipedia.org/wiki/IEEE_754-2008,其全文也可以在线阅读:http://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber = 4610933.
归档时间: |
|
查看次数: |
17491 次 |
最近记录: |