float基本类型变量比较问题

    技术2022-07-11  77

    在初学基本数据类型时遇到的一个坑

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

    Processed: 0.016, SQL: 9