`
月亮不懂夜的黑
  • 浏览: 151296 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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的类型,将该情况定义为静态变量。所以得到上面没有报错就很正常了。
1
4
分享到:
评论
3 楼 月亮不懂夜的黑 2012-12-11  
2楼的实际就是对该部分异常的处理,基本差不多。即使不适用三元运算符,也需要使用if else判断。我在这里只是为了探究一下为了在double/0不报错的情况,
2 楼 yefansiping 2012-12-06  
如果被除等于0,那么可以用三元运算判断,直接赋值不进行相除;这是我这的需求可以满足的,希望有更好的方法大家共享出来
1 楼 mumuaimao2009 2012-08-23  

相关推荐

Global site tag (gtag.js) - Google Analytics