FLOAT
2FLOAT即单精度浮点型数据类型,数据类型用于存储单精度浮点数或双精度浮点数。
FLOAT具有4个字节,包括一个符号位、一个8位excess-127二进制指数和一个23位尾数,尾数表示一个介于1.0和2.0之间的数。由于尾数的高顺序位始终为1,因此它不是以数字形式存储的。
基本信息
- 范围
-3.4E+38、3.4E+38
- 使用格式
IEEE格式
- 中文名称
浮点型
- 作用
用于存储单精度浮点数或双精度浮点数
- 字节数
4个
- 外文名
float
主要内容
可根据应用程序的需求将变量声明为 float 或 double。这两种类型之间的主要差异在于它们可表示的基数、它们需要的存储以及它们的范围。下表显示了基数与存储需求之间的关系。
应用领域
应用案例
在 C 和 C++ 中,如下赋值语句:
1 | float a=0.1; |
编译器报错:warning C4305: 'initializing' : truncation from 'const double ' to 'float '
原因:在 C/C++ 中,上述语句等号右边 0.1,认为是个 float,但是编译器却把它认为是个 double(因为小数默认是 double),所以要报这个 warning,一般改成0.1f就没事了。
浮点类型
类型 | 有效位 | 字节数 |
|---|---|---|
float | 6 – 7 | 4 |
double | 15 – 16 | 8 |
浮点变量由尾数(包含数字的值)和指数(包含数字的数量级)表示。
下表显示了分配给每个浮点类型的尾数和指数的位数。任何 float 或 double 的最高有效位始终是符号位。如果符号位为 1,则将数字视为负数;否则,将数字视为正数。
浮点变量由尾数(包含数字的值)和指数(包含数字的数量级)表示。
下表显示了分配给每个浮点类型的尾数和指数的位数。任何 float 或 double 的最高有效位始终是符号位。如果符号位为 1,则将数字视为负数;否则,将数字视为正数。
指数和尾数
类型 | 指数长度 | 尾数长度 |
|---|---|---|
float | 8 位 | 23 位 |
double | 11 位 | 52 位 |
由于指数是以无符号形式存储的,因此指数的偏差为其可能值的一半。对于 float 类型,偏差为 127;对于 double 类型,偏差为 1023。您可以通过将指数值减去偏差值来计算实际指数值。
存储为二进制分数的尾数大于或等于 1 且小于 2。对于 float 和 double 类型,最高有效位位置的尾数中有一个隐含的前导 1,这样,尾数实际上分别为 24 和 53 位长,即使最高有效位从未存储在内存中也是如此。