一道面试题(java)
float   a   =   3f; 
 for(int   i=0;i <200;i++) 
             a-=0.01; 
 a   =   (int)a; 
 System.out.println(a);//结果是什么,说明原因.
------解决方案--------------------结果肯定是1。0,过程中出现的00001,我的理解是计算机的二进制与我们用的10进制转换问题。(个人理解) 
 就像DOUBLE的0。0无限接近于0一样
------解决方案--------------------楼主你是不是搞错了啊 
 怎么会输出那么多次啊   
 a = (int)a; 
 其中(int)a ==1 是可以确定了 
 为什么输出是1.0呢,是因为a是float型的 
 这句的效果就是 float a =1 一样
------解决方案--------------------a = (int)a;   
 这里我也有点不明白,为什么   
 经过 (int) 转换了 还是  1.0 呢,还会有小数位呢?
------解决方案--------------------我也觉得应该是1
------解决方案--------------------1.0,(int)a的确为1,可是a是float类型的啊,就相当于float a=1一样,那a就是1.0了.
------解决方案--------------------输出是1.0 
 虽然(int)a=1,但a仍然是float的啊!所以输出为1.0 
 人类使用的是十进制,所以你觉得a的结果为1.0,但计算机用的是二进制啊,结果a等于1.0000009,就好比你没法用十进制精确得表示1/3一样! 
------解决方案--------------------float a = 3f; 
 for(int i=0;i <200;i++) 
     a-=0.01; 
 a = (int)a; 
 System.out.println(a);//   
 为什么那么多人不理解结果是1.0呢??程序中的a是float类型,它是全局的, 
 a = (int)a;     
 实际上是:float a = (int)a;  
 等式右边强制类型转换(float--> int),所以结果是1,而等式左边,由于a是float类型,将int行赋值给float类型,就发生了自动类型(隐式类型转换)转换了(int--> float);所以结果是1.0;   
 至于在计算过程中为什么出现;   
 第 9 次=====2.9 
 第 10 次=====2.89 
 第 11 次=====2.88 
 第 12 次=====2.8700001 
 第 13 次=====2.8600001   
 我也同意是计算机进制之间转换的问题
------解决方案--------------------float a = 3f; 
 for(int i=0;i <200;i++) 
     a-=0.01; 
 a = (int)a; 
 System.out.println(a);//   
 楼主题目都写错了。。   
 如果结果是你这样的话: 
 ...... 
 ...... 
 第 9 次=====2.9 
 第 10 次=====2.89 
 第 11 次=====2.88 
 第 12 次=====2.8700001 
 第 13 次=====2.8600001 
 .....   
 那么就要注释这一句 //a = (int)a; 
 结果是1.000019 
 应该是十进制和二进制转换之间出现的问题哦。。
------解决方案--------------------1
------解决方案--------------------楼主:最后你的变量a还是是Float啊
------解决方案--------------------原因就是a是float的
------解决方案--------------------float a; 
 ...... 
 (a = (ing)a;) 和(float a = (int)a)
------解决方案--------------------应该是1.0吧,虽然没有运行测试过   
 因为3-1.99后取整数部分同时a又是float类型   
------解决方案--------------------呵呵,不好意思,问一下 
 ----------------------------- 
 ...... 
 ...... 
 第 9 次=====2.9 
 第 10 次=====2.89 
 第 11 次=====2.88 
 第 12 次=====2.8700001 
 第 13 次=====2.8600001 
 ------------------------------ 
 是什么意思?
------解决方案--------------------1
------解决方案--------------------200的循环。。。。。 
 将结果float type casting int  再赋值给float type 。 
 结果是多少我就不想去计算了。。
------解决方案--------------------很多人说是进制转换的问题,那到底为什么会产生这个问题呢?不太明白,讲的在细致些好吗??