float f1 = 0.9999999f;
float f3 = 0.99999999f;
float f2 = 1f;
boolean value = (Float.floatToIntBits(f1) == Float.floatToIntBits(f2));
System.out.println(Float.floatToIntBits(f1));
System.out.println(Float.floatToIntBits(f2));
System.out.println(value);
System.out.println(f1==f2);
System.out.println("----------");
boolean value2 = (Float.floatToIntBits(f3) == Float.floatToIntBits(f2));
System.out.println(f3==f2);
System.out.println(Float.floatToIntBits(f3));
System.out.println(value2);
输出结果:
1065353214
1065353216
false
false
----------
true
1065353216
true
可见缺省float的精度是8位小数,即>=8位小数时就认为相等了