float和double使用注意

float:单精度浮点数,占4字节,32位。

double:双精度浮点数,占8字节,64位。

注意:

  1、十进制数形式:浮点数必须包含一个小数点,例如:3.13、5.16;不包含小数点会被当成int类型处理,例如:3则会被当成int类型。

  2、科学计数形式:例如:5.12e2、5.12E2,只有浮点类型的数值才可以使用科学计数法形式表示,例如:58000是int类型,58E3则是浮点类型的值,58000.0

    public void test(){
        // ft的值发生了改变
        float ft = 5.1234567F;
        System.out.println("ft---" + ft);   // 5.1234565
        // db值发生改变
        double db = 6.1234567890123456;
        System.out.println("db---" + db);   // 6.123456789012345
        // 正无穷大和负无穷大
        double dMax = Double.POSITIVE_INFINITY;
        float fMax = Float.POSITIVE_INFINITY;
        double dMin = Double.NEGATIVE_INFINITY;
        float fMin = Float.NEGATIVE_INFINITY;
        System.out.println("float和double正无穷大比较---" + (dMax == fMax));   // true
        System.out.println("float和double负无穷大比较---" + (dMin == fMin));   // true
        // 0.0 除以 0.0将出现非数
        double num = 0.0;
        System.out.println(num / num);    // NaN
        // 非数之间不相等
        System.out.println(num / num == Float.NaN);   // false
        // 所有正无穷大都是相等的
        System.out.println(6.0 / 0 == 66.0 / 0);    // true
        // 负数除以0.0得到负无穷大
        System.out.println(-6 / 0.0);   // -Infinity
        // 数值中使用下划线分割,java7引入
        double number = 12_1313.14_1592;
        System.out.println("number---" + number);   // 121313.141592
        // 5 除以 0抛出异常,被除数为整数,除数不能为0,否则抛出异常
        System.out.println(5 / 0);  // java.lang.ArithmeticException: / by zero
    }

 如果要精确保存一个浮点数,可以考虑使用 BigDecimal类

posted @ 2022-04-06 13:27  孙浩月  阅读(353)  评论(0编辑  收藏  举报