在初学基本数据类型时遇到的一个坑
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类型的变量字长是有限的,是离散的,无法精确表达,会对变量进行四舍五入,存在舍入误差,即结果是一个大约数,接近答案但不等于。