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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黑马潘浩 于 2013-3-10 11:01 编辑

如题:为什么 -0/3 结果是 0,而  -0.0/3.0 结果是 -0.0?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

8 个回复

倒序浏览
int类型的数除以int类型的数等于int 类型的数

double类型的数除以double类型的数等于double类型的数

int 类型的数除以doubole类型的数会是int 但他会隐式转换为double类型

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
在Java里,整数是用补码表示的。在补码中0只有一种表示方法。另一方面,浮点数则是用 IEEE 标准表示的, 对于0有两种表示方法, 0 和 -0。。。这看上去有点奇怪,但是是规定了。小问题。记住就是了。
回复 使用道具 举报
为什么 -0/3 结果是 0,而  -0.0/3.0 结果是 -0.0?
答:
1:0除以任何数都得0,0跟-0有什区别,没区别; 不定义默认为int型,所以-0/3 结果只取商,所以是0  【0比较特殊嘛】
2: -0.0/3.0 java默认是double型的,double对精度要求高,所以结果是 -0.0
回复 使用道具 举报
试了下,还真是这样。记住了。。
还试了下
-0/3.0  =》 0.0
-0.0/3  =》 -0.0

求大神出来分析解释下~
回复 使用道具 举报
四楼正解、、顶一个
回复 使用道具 举报
小总结:
          1.当两个变量做运算,如果类型一样,那么结果与其类型一样。
        2.当两个变量做运算,类型不一样,其结果取精度高的类型。
        3.如果byte short char 三种数据类型做运算,会先将自己转换成int在参与运算.

如果左边数比右边小,那么结果就是左边的数
如果出现负数,那么结果只与左边数的正负有关 ,做运算时通过绝对值操作。
System.out.println(3%-10);3
System.out.println(-3%10);-3
System.out.println(-3%-10);-3

评分

参与人数 1黑马币 +9 收起 理由
黄玉昆 + 9 赞一个!

查看全部评分

回复 使用道具 举报
黑马17期-闫东东 发表于 2013-3-9 23:52
小总结:
          1.当两个变量做运算,如果类型一样,那么结果与其类型一样。
        2.当两个变量做运算,类 ...

给点分吧:'(
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马