[置顶] java除0问题探究

今天在写代码的时候,突然发现一个小问题:

double a = 0;
System.out.println(a/0);

这部分竟然出乎我意料的没有报除零异常。而是打印NaN。思索之后,感觉问题关键可能是出在数据类型上。修改a为int类型。果然出现熟悉的/zero错误。这时候,突然想起,以前看过文章说过该问题,但现在的我已经忘记了当时的思想。所以重新寻找思路。各种搜索之后,看了看API发现问题的根源。附API的代码:

    public static final double POSITIVE_INFINITY = 1.0 / 0.0;
    public static final double NEGATIVE_INFINITY = -1.0 / 0.0;
    public static final double NaN = 0.0d / 0.0;
通过查看源码发现java中对于Double的类型,将该情况定义为静态变量。所以得到上面没有报错就很正常了。
posted @ 2017-04-10 10:27  Yannis-chen  阅读(163)  评论(0编辑  收藏  举报