一、浮点类型分类

类型 占用存储空间 范围
单精度float 4字节 -3.404E38~3.403E38
双精度double 8字节 -1.798E308~1.798E308

 

 

 

 

说明:

1.关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位

2.尾数部分可能丢失,造成精度损失(小数都是近似值)

二、使用细节

1.与整数类型类似,浮点类型也有固定的范围和长度,不受具体操作系统的影响

2.java的浮点型默认是double型,声明float型常量需要加f或F

3.浮点型有两种表示形式:

(1)十进制形式:如5.12    512.0f     .512  必须要有小数点

(2)科学计数法:5.12e2   5.12E-2

public class DoubleDemo {
  public static void main(String[] args) {
    double num1 = 1.1;
    double num2 = 1.1f;
    double num3 = .123;
    System.out.println(num1);
    System.out.println(num2);
    System.out.println(num3);
    System.out.println(5.12e3); // 5120.0
    System.out.println(5.12E-2); // 0.0512
  }
}

4.通常情况下,应该使用double型,因为它比float型更精确

public class DoubleDemo {
  public static void main(String[] args) {
    double num1 = 1.1234567821;
    float num2 = 1.1234567821F;
    System.out.println(num1); // 1.1234567821
    System.out.println(num2); // 1.12345678
  }
}

5.浮点型使用陷阱: 2.7 和8.1/3

public class DoubleDemo {
  public static void main(String[] args) {
    double num1 = 2.7;
    double num2 = 8.1 / 3;
    System.out.println(num1); // 2.7
    System.out.println(num2); // 2.6999999999999997
  }
}