日期:2014-05-20  浏览次数:20913 次

0.5f==0.5 0.3f==0.3
0.5f==0.5 0.3f==0.3 返回值是什么呢?
------解决方案--------------------
并不是类型不同的问题

而是有些小数无法用float或double精确表示的问题

比如0.x是一个无法用二进制精确表示的数

那么,float a = 0.x实际保存的可能是0.x.......10983,也就是说后面还有数字
double的话同是如此,但double的位数更多

所以,这样用==来比较肯定不相等

一般程序中,是很少用float,double直接==比较的,如果不可避免这两种类型的比较,一般采用减法来做,如
if(a-b<0.000001) {
//就表示两者相等,精度自己控制
}