特征
- float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
- float 在储存大型浮点数组的时候可节省内存空间;
- 默认值是 0.0f;
- 浮点数不能用来表示精确的值,如货币;
- float是浮点类型中的一种,以F或f结尾标识,如果不加F或f,则会Java自动默认位double类型数据。
例子:float f1 = 234.5f。
内存结构
IEEE 754 浮点单精度(即float)数字格式定义了存储浮点数的32位比特(bit)布局,各bit位具体为:"一位做符号位,八位留作指数,23位作尾数"。具体如下:
SEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMM
其中:
S = 符号位
E = 指数
M = 尾数
float的范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38;
浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,由于最左为1的一位省略了,这意味着最多能表示8位数: 2*8388608 = 16777216 。有8位有效数字,但绝对能保证的为7位,也即float的精度为7~8位有效数字;