float和double的比较
float:
-
是单精度浮点数
-
在内存中占四个字节
-
单精度浮点数的有效位数是八位
double:
-
是双精度浮点数
-
在内存中占八个字节
-
双精度浮点数的有效位数是十六位
public class lianxi {
public static void main(String[] args) {
//浮点数
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);
System.out.println(f);
System.out.println(d);
float d1 = 123456789123456789f;
float d2 = d1 + 1;
System.out.println(d1==d2);
}
}
运行结果如下图
总结
-
浮点数的表示位数是有限的,具有舍入误差
-
当表示的数值比较大时,表示的只是个大约数,接近但是不等于
-
最好不要使用浮点数float和double单独进行比