public class Test_LiSanShuJu {
public static void main(String[] args){
float d1 = 0.1f;
double d2 = 0.1; //d2 = 0.1 同
System.out.println(d1==d2); //输出float
}
}
如上所示。如果说是因为这两种类型表示的是有限的离散数据(只能表示大约的数字),而真实的数字是无限(精确)的,那么下面怎么解释呢:
float d1 = 24252525252525;
float d2 = d1 + 1;
System.out.println(d1==d2); //输出true
猜测:同类型的离散数据(精度)相等,不同则不相等。仅限于浮点数,整数是不考虑精度问题的:
float d1 = 1.0f;
double d2 = 1.0;
System.out.println(d1==d2); //输出true
结论:最好完全使用浮点数进行比较。