1.浮点型基本数据类型介绍
浮点类型用于表示有小数部分的数值。在JAVA种有俩种浮点类型,分别是float和double.
类型 | 字节长度 | 位数 | 取值范围 |
---|---|---|---|
float | 4字节 | 32 | 约 ±3.40282347E+38F |
double | 8字节 | 64 | 约 ±1.79769313486231570E+308 |
double表示这种类型的数值精度是float类型的俩倍,在大多数时候,float类型的精度(6~7位有效数字)并不能满足需求,所以大多时候在开发种都是使用double类型,只有需要单精度或者需要存储大量数据时才会考虑float。
2.float 数据类型
Java中所有直接写出来的小数,就是浮点直接量。
package partOne;
/*
本类用于测试基本数据类型--float
*/
public class TestFloat {
//创建java的入口函数--main方法
public static void main(String[] args) {
float minFloat = Float.MIN_VALUE;
float maxFloat = Float.MAX_VALUE;
System.out.println(minFloat); //输出结果为:1.4E-45
System.out.println(maxFloat); //输出结果为:3.4028235E38
}
}
float数据类型在使用时也要注意,其和long数据类型有同样的问题,浮点型数据默认是double数据类型,所以一个超过float数据类型范围的数声明为float类型时,会导致溢出问题,所以在声明float时需要在其值后加一个F或f;
3.double 数据类型
package partOne;
/*
本类用于测试基本数据类型--double
*/
public class TestDouble {
//创建java的入口函数--main方法
public static void main(String[] args) {
double minDouble = Double.MIN_VALUE;
double maxDouble = Double.MAX_VALUE;
System.out.println(minDouble); //输出结果为:4.9E-324
System.out.println(maxDouble); //输出结果为:1.7976931348623157E308
}
}
4. 浮点数运算不精确现象
浮点数不适合任何不接受舍入误差的计算,因为计算机所有数据的表现形式底层都是二进制,对于小数的也好,整数也好,其都是十进制的形式,此时就涉及到一个进制转换的问题,十进制整数转换为二进制整数采用 “除2取余,逆序排列” 的方法,其具体实现是:
1. 用2整除十进制整数,可以得到一个商和余数;
2. 再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止
3. 然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
这也就导致,对于小数,永远都有除不尽的数存在。
但是实际运用中,又需要精确的表达,这就涉及到了bigdecimal类的使用,相关内容会在后续章节进行讲解。