java中有无穷大吗_Java语言中有无穷大

一休:愚公,我也故意在下面这个程序中添加了一些错误,本来是要在执行时出错的,但程序执行正常,执行的结果如图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);

}

}

0818b9ca8b590ca3270a3433284dd417.png

可是,我把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所示。

0818b9ca8b590ca3270a3433284dd417.png

愚公:这样计算也是对的。但Java只对double类型设置几个特殊值,int类型没有这样的设置,所以一旦执行到类似“10/0”的计算就会出现运行错误,这类问题没有什么技巧可言,因为Java语言就是这样处理的,我们了解这些规则就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值