A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© houyudong 中级黑马   /  2014-5-19 21:48  /  1844 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

System.out.println(0/0); //编译ok,运行错误
System.out.println(0/0.0);//NaN
System.out.println(1/0.0);//infinity
System.out.println(0.0/0);//NaN
System.out.println((0/0.0) == (0/0.0)); //false

数学曾经学过除数不能为零,而上面的语句却并没有报错,说明是正确的,他前面为double类型,所以后面的零也自动转换为double类型,问题来了:在一个语句中,到底是,还是?如果先进行类型转换在运算,编译时语法会编译通过?先运算后转换那么不是代表不同类型的数可以相互运算?搞不懂,求大神

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

5 个回复

倒序浏览
没有人给我解释这个问题呢??
回复 使用道具 举报
第一句:ArithmeticException是RuntimeException 编译时不检查的
后面几句:
在JAVA中有三个特殊的浮点类型的数值:正无穷大、负无穷大、NaN。这三种数值用来表示出错或者溢出的情况。
比如:用一个正数去除0得到的是正无穷大(infinity),因为在浮点数运算中,不存在真正意义上的0,而是一个无限接近于0的浮点数。
NaN:是not a number,它不是一个数字,比较大小没意义Orz

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

回复 使用道具 举报 1 0
在java中,是可以运算的,如果int整形数据和一个实数运算,会先运算,,比如:int a=5;double   b=2.5;int c=int(a/b)=2.5,但是还需要你强制转换成int类.型的数据,因为右边运算结果是一个实数型的数据(实数是浮点数)而左边接收的是int,所以要准换,是输出语句里写一个数,默认是int的数据,,java中数据运算后,暗里会按最大的那个数据的类型转换,int long,结果是long类型的数据,左边是什么类型的,右边就把结果转换成什么类型的数据,
回复 使用道具 举报
b写错了,应该写b=2.0
回复 使用道具 举报
我是想知道,是先进行运算在转换,还是转换后在进行运算
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马