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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hacket 高级黑马   /  2013-3-21 23:57  /  1357 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hacket 于 2013-3-22 22:05 编辑
  1. public class NumberDemo
  2. {
  3.       public static void main(String args[])
  4.      {
  5.                
  6.         System.out.println(-0/3);
  7.         System.out.println(-0.0/3.0);
  8.    }
  9. }
复制代码
为什么结果是:
0
-0.0

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 王俊杰 于 2013-3-22 00:16 编辑

这是因为在java中整数和浮点数对于0的存储方式不同引起的。

在Java里,整数是用补码表示的。

在补码中0只有一种表示方法。因此-0/3得0

另一方面,浮点数则是用 IEEE 标准表示的, 对于0有两种表示方法, 0 和 -0。因此-0.0/3.0得-0.0

祝你进步!

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
  1. public class NumberDemo
  2. {
  3.       public static void main(String args[])
  4.      {
  5.                
  6.         System.out.println(-0/3);        //这两条输出语句都是在进行运算,这里-0/3,-0 和 3 都是整数,默认是 int 类型,所以结果也是 int 类型,输出0。
  7.         System.out.println(-0.0/3.0);  //这里的 -0.0 和 3.0 都是小数,默认是 double 类型,所以结果就是 double 类型,输出就是 -0.0 。
  8.    }
  9. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
第一个结果得到0,好理解,int类型计算最后得到的也是int类型,所以等于0
第二个结果得到-0.0,当一个浮点数运算产生了一个无限接近0并且没有办法正常表示出来的负浮点数,那么负零就产生了。“-0.0”在数值上等于“0.0”,但是一些涉及到“-0.0”的运算在和相同的涉及到“0.0”的运算又不一样。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
public class NumberDemo
{
      public static void main(String args[])
     {

        System.out.println(-0/3);
        System.out.println(-0.0/3.0);
   }
}


结果是0和-0.0


第一个结果,因为是int型的,只取整数,而不不存在-0这么一说法,所以只取整数部分,就是0了,
第二个结果是浮点型的,所以就有了小数点,

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马