在初学基本数据类型时遇到的一个坑
float a=0.1F;
double sum=1.0/10;
System.out.println(a==sum);
其中可知a为0.1且sum也为0.1但是输出结果却为flase。
这又是为什么呢?
再让我们来看看下面三行代码。
float f1=43242342342F;
float f2=f1+1;
System.out.println(f1==f2);
显然这两个数是不想等的,但输出结果为什么又是相等的呢?
原因是:float类型的变量字长是有限的,是离散的,无法精确表达,会对变量进行四舍五入,存在舍入误差,即结果是一个大约数,接近答案但不等于。