黑马程序员技术交流社区
标题:
不懂的问题
[打印本页]
作者:
hacket
时间:
2013-3-21 23:57
标题:
不懂的问题
本帖最后由 hacket 于 2013-3-22 22:05 编辑
public class NumberDemo
{
public static void main(String args[])
{
System.out.println(-0/3);
System.out.println(-0.0/3.0);
}
}
复制代码
为什么结果是:
0
-0.0
作者:
王俊杰
时间:
2013-3-22 00:15
本帖最后由 王俊杰 于 2013-3-22 00:16 编辑
这是因为在java中整数和浮点数对于0的存储方式不同引起的。
在Java里,整数是用补码表示的。
在补码中0只有一种表示方法。因此-0/3得0
另一方面,浮点数则是用 IEEE 标准表示的, 对于0有两种表示方法, 0 和 -0。因此-0.0/3.0得-0.0
祝你进步!
作者:
朱盛文
时间:
2013-3-22 00:16
public class NumberDemo
{
public static void main(String args[])
{
System.out.println(-0/3); //这两条输出语句都是在进行运算,这里-0/3,-0 和 3 都是整数,默认是 int 类型,所以结果也是 int 类型,输出0。
System.out.println(-0.0/3.0); //这里的 -0.0 和 3.0 都是小数,默认是 double 类型,所以结果就是 double 类型,输出就是 -0.0 。
}
}
复制代码
作者:
lxww
时间:
2013-3-22 00:36
第一个结果得到0,好理解,int类型计算最后得到的也是int类型,所以等于0
第二个结果得到-0.0,当一个浮点数运算产生了一个无限接近0并且没有办法正常表示出来的负浮点数,那么负零就产生了。“-0.0”在数值上等于“0.0”,但是一些涉及到“-0.0”的运算在和相同的涉及到“0.0”的运算又不一样。
作者:
唐永康
时间:
2013-3-22 07:59
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了,
第二个结果是浮点型的,所以就有了小数点,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2