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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王永荣 中级黑马   /  2012-11-16 21:44  /  1403 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class 测试{
  2.         public static void main(String[] args){
  3.                 System.out.println(0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1);
  4.                 System.out.println(0.9/0);
  5.                 System.out.println(0.4+0.8);
  6.                 int a = 1;
  7.                 int b = 2;
  8.                 a=b+0*(b=a);
  9.                 System.out.println("a="+a);
  10.                 System.out.println("b="+b);
  11.         }
  12. }
复制代码
你觉得上面的代码能运行吗?运行结果是什么?
不改一个字,贴到电脑上运行下!

------------------------
看看结果!涨姿势了吧!{:soso_e104:}

3 个回复

倒序浏览
本帖最后由 dan8612 于 2012-11-16 21:58 编辑

结果是:0.9999999999999999
               Infinity
              1.2000000000000002
              a=2
              b=1
你知道原因吗?我能理解a和b
回复 使用道具 举报
主要原因是浮点型数据在存储时是按浮点类型存储的,一般它会占用比int多一倍的字节去存储,前面部分存存储整数部分,后面的部分是小数部分,注意这时要将10进制转换成2进制数据,因为一个字节存储的内容是有限的,因此就会有数据丢失问题,最后算出来的结果是个进似值。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
就能看出来 a b。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马