特征


  • 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位有效数字;