float数据类型进行数值比较

float作为浮点型数据类型,其数值是有限的,是离散有存在舍入误差,是一个大约数,接近但是不等于。

当浮点型数据比较小的时候,即使两个数据表面看起来一样。但是其数值并不相等。eg:

1 float f=0.1f;
2 double d=1.0/10;
3 System.out.println(f==d);
4 System.out.println(f);
5 System.out.println(d);

运行结果:

 

可以看到,输出f跟d的值都是0.1,但是在两个作比较之后,却输出false。这就证实了,浮点数的舍入误差,接近但不等于的特性。类似于“约等于”的意思。

 

float f1=215215544f;
float f2=f1+1;
System.out.println(f1==f2);

 运行结果:

但是当浮点数基数为一个较大的数值时,就会发生一些很“诡异”的事情。突然两个数值就相等了。。。。

总结:浮点型数据就像一个“约等于”,不能作为用来做比较的数据类型。会产生一些不必要的错误。浮点数可以简单理解为“约等数”,不是一个具体可靠的数。

 

posted @ 2020-04-18 22:52  奔跑的虫呙牛  阅读(1275)  评论(0)    收藏  举报