1. 浮点数介绍
- 可以用来表示一个小数。ex. 1.34,379.0
2. 浮点类型

- 浮点数在机器中存放的形式,浮点数 = 符号位 + 指数位 + 尾数位
- 尾数部分可能丢失,造成精度损失(小数都是近似值)
3. 浮点数细节(5点)
1. 与证书类型相似,java浮类型也有固定的范围和字段长度,不受具体OS的影响。
2. java的浮点型常量默认为double型,声明float型常量,须在后面加‘f’
public class varDetail {
public static void main(String[] args) {
float n1 = 1.1;
float n2 = 1.1F;
double n3 = 1.1;
double n4 = 1.1F;
}
}
3. 浮点型常量有两种表示形式。
- 十进制形式: 如: 5.12 512.0f .512 (必须有小数点)
- 科学计数法形式:如: 5.12e2[相当于5.12 * 10的2次方
5.12E-2 [5.12 / 10的2次方]
public class varDetail {
public static void main(String[] args) {
double n5 = .123; [等价于0.123]
System.out.println(5.12e2);
System.out.println(5.12E-2);
}
}
4. 通常情况下,应该使用double型,因为它比float型更精确
public class varDetail {
public static void main(String[] args) {
double n9 = 2.1234567851;
float n10 = 2.1234567851F;
}
}
5. 浮点数使用陷阱: 2.7 和8.1/3 比较
- 重点: 当我们对运算结果为小数的数字进行相等判断时,要小心
- 应该时以两个数的差值的绝对值,在某个精度范围内判断。
- 如果是直接查询的小数,或者直接赋值的,是可以直接判断相等。
public class varDetail {
public static void main(String[] args) {
double n11 = 2.7;
double n12 = 8.1 / 3;
System.out.println(n11);
System.out.println(n12);
if(math.abs(n11 - n12) < 0.000001) {
System.out.println("差值非常小,到了我的规定精度,认为是相等的");
System.out.println(math.abs(n11 - n12) < 0.000001);
}
}
}