您的位置:首页 > 编程语言 > Java开发

Java语言中有无穷大

2015-09-24 09:58 411 查看
一休:愚公,我也故意在下面这个程序中添加了一些错误,本来是要在执行时出错的,但程序执行正常,执行的结果如图12所示。

public class FunnyNumbers

{ public static void main(String args[])

{ double largeNum=Math.exp(4000.0);

double posDivZero=10.0 / 0.0;

double negDivZero=-10.0 / 0.0;

double zeroDivZero=0.0/0.0;

System.out.println(largeNum);

System.out.println(posDivZero);

System.out.println(negDivZero);

System.out.println(zeroDivZero);

}

}



可是,我把double类型改成了int类型,程序马上就不灵了。

愚公:你把程序解释一下。

一休:该程序用于显示一些特殊数据的运算,如exp(4000.0)是一个非常大的数,可能大于double类型所能够容纳的数;10.0/0.0是一个非法的运算,通过运行展示Java如何处理这些运算。

愚公:知道了,问题出在Java对double类型设置了两个特殊值,即Infinity和NaN(Not-a-Number),这就意味着Java在某种程度上可以处理一些其他语言不能处理的问题。更有趣的是,Java可以对Infinity和NaN(Not-a-Number)进行加、减、乘、除运算,你可以试验一下。

一休:我在上面的程序中增加了以下代码:

double x=largeNum+posDivZero;

double y=largeNum+negDivZero;

double z=largeNum+zeroDivZero;

System.out.println("x="+x);

System.out.println("y="+y);

System.out.println("z="+z);

计算的结果如图13所示。



愚公:这样计算也是对的。但Java只对double类型设置几个特殊值,int类型没有这样的设置,所以一旦执行到类似“10/0”的计算就会出现运行错误,这类问题没有什么技巧可言,因为Java语言就是这样处理的,我们了解这些规则就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: