黑马程序员技术交流社区
标题:
不要错过啊,过来颠覆你的思维吧~~
[打印本页]
作者:
王永荣
时间:
2012-11-16 21:44
标题:
不要错过啊,过来颠覆你的思维吧~~
class 测试{
public static void main(String[] args){
System.out.println(0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1);
System.out.println(0.9/0);
System.out.println(0.4+0.8);
int a = 1;
int b = 2;
a=b+0*(b=a);
System.out.println("a="+a);
System.out.println("b="+b);
}
}
复制代码
你觉得上面的代码能运行吗?运行结果是什么?
不改一个字,贴到电脑上运行下!
------------------------
看看结果!涨姿势了吧!{:soso_e104:}
作者:
郑丹丹
时间:
2012-11-16 21:56
本帖最后由 dan8612 于 2012-11-16 21:58 编辑
结果是:0.9999999999999999
Infinity
1.2000000000000002
a=2
b=1
你知道原因吗?我能理解a和b
作者:
王玮
时间:
2012-11-16 22:07
主要原因是浮点型数据在存储时是按浮点类型存储的,一般它会占用比int多一倍的字节去存储,前面部分存存储整数部分,后面的部分是小数部分,注意这时要将10进制转换成2进制数据,因为一个字节存储的内容是有限的,因此就会有数据丢失问题,最后算出来的结果是个进似值。
作者:
刘腾
时间:
2012-11-16 22:31
就能看出来 a b。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2