当前位置: java社区 > 01-初学乍练 > 阅读正文

java的float是一个大约数

2021.8.17.   305 次   427字

java的float是一个大约数,在float进行比较时,往往会出现一些出乎意料的结果

例如,在下面的程序中,虽然f1并不等于f2,但输出是true,因为f1足够大约等于f1-1。而f3赋值0.3,却不等于0.3,因为0.3取float精度丢失太多

    public static void main(String[] arg) {
        float f1 = 8748787848788F;
        float f2 = f1 - 1;
        System.out.println(f1 == f2);  // true

        float f3 = 0.3f;

        System.out.println(f3==0.3);  // false
    }

虽然double也是浮点数,但并不会出现上面的情况,float不精确,double精确。

此外,若浮点数中,小数部分为0时,或其他不丢精度的,float又是精确的。

        double d1=1.0d;
        float d2=1.0f;
        System.out.println("d1==d2 "+(d1==d2));  // true

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群