int i = 6;
float i2 =6.0000f;
float f = 6.0008F;
double d = 6.0008D;
if(i==i2){
System.out.println("Hello");
}
if(f==d){
System.out.println("nihao");
}
结果:只输出 Hello 不输出 nihao
你要去了解一下浮点数在计算机中表示的原理,不然你是理解不了这个东西的,这就是问什么大多数时候都是int 型 ,或者使用整形数组来进行大数的运算
http://blog.csdn.net/iloli/article/details/8447571
浮点数有特殊的存储方式,多数都不能精确表示,所以用 == 判断是否相等就不合适了,你可以把两个数做差,差值小于一定范围视为相等
浮点数存在进制转换误差,只有小数是0.5 0.25 0.125 0.0625...以及它们的和(比如0.75=0.5+0.25)等等才能精确表示。
比如
float f = 6.125F;
double d = 6.125D;
这样比较才能相等。
像6.0008,转换为二进制,结果是无限小数,所以double和float当然不等了。
浮点数不能使用==进行比较,应该使用abs(x1-x2)<eps
判断x1和x2是否相等(其中eps为一个很小的正数,如1e-5)