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语言就是这样处理的,我们了解这些规则就可以了。
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语言就是这样处理的,我们了解这些规则就可以了。
相关文章推荐
- javaee基本环境搭建
- eclipse maven plugin 插件 安装 和 配置
- mybatis-spring从1.1升级到1.2所带来的dao层级的编写问题
- eclipse maven update project 相关问题
- Java String处理入门 - null或空值的判断处理
- java.util.NoSuchElementException解决办法
- Java于 初始化序列?
- Java学习笔记
- 在java项目文件读取数据库文件prodect.xml信息
- spring mvc综合easyui点击上面菜单栏中的菜单项问题
- java根据jar包反编译后修改再打包回jar的做法
- 给java项目改名字
- 使用 JavaFX 快速创建应用程序
- Java基础知识强化53:经典排序之选择排序(SelectionSort)
- 将java log4j的日志配置输出到mysql中
- java集合类中的迭代器
- SimpleDateFormat使用详解 java
- 深入理解Java:注解(Annotation)--注解处理器
- JAVA 学习关于 类
- java冒泡排序算法