float数据类型
FLOAT是C语言的基本数据类型中的一种,是浮点型数据类型。
FLOAT数据类型用于存储单精度浮点数或双精度浮点数。浮点数使用IEEE(电气和电子工程师协会)格式。浮点类型的单精度值具有4个字节,包括一个符号位、一个8位二进制指数和一个戚清备23位尾数。由于尾数的高顺序位始终为1,因此它不是以数字形式存储的。
如果存储比精度更重要,考虑对浮点变量使用float类型。相反,如果精度是最重要的条件,则使用double类型。浮点变量可以提升为更大基数的类型(从float类型到double类型)。当您对浮点变量执行算术时,通常会出现提升。此算术始终以与具有最高精度的变量一样高的精度执行。
FLOAT的指数
由于指数是以无符号形式存储的,因此指数的偏差为其可能值的一半。对于float类型,偏差为127;对于double类型,偏差为1023。您可以通过将指数值减去偏差值来计算实际指数值。
存储为二进制分数的尾数大于或等于1且小于2。对于float和double类型,最高有效位位置的尾数中有一个隐含的前导1,这样,尾数实际上分别为24和53位长,即使最高有效位从未存储在内存中也是如此。
浮点包可以将二进制浮点数高毁存储为非标准化数,而不使用刚刚介绍的存储方法。“非标准化数”是带有保留指数值的非零浮点数,其中尾数的最高有效位为0。通过使用非标准化格式,浮点数的范围可以扩展正念,但会失去精度。浮点包从不使用非标准化形式,除非指数变为小于可以标准化形式表示的最小值。