C语言中float浮点型数据类型,FLOAT数据类型用于存储单精度浮点数或双精度浮点数。
1、float的作用:
FLOAT 数据类型用于存储单精度浮点数或双精度浮点数,浮点数使用 IEEE(电气和电子工程师协会)格式。
浮点类型的单精度值具有 4 个字节,包括一个符号位、一个 8 位 excess-127 二进制指数和一个 23 位尾数,尾数表示一个介于 1.0 和 2.0 之间的数,由于尾数的高顺序位始终为 1,因此它不是以数字形式存储的。
此表示形式为 float 类型提供了一个大约在 -3.4E+38 和 3.4E+38 之间的范围。
2、如果存储比精度更重要,请考虑对浮点变量使用 float 类型。相反,如果精度是最重要的条件,则使用 double 类型。
意思是浮点型数据类型,通俗点讲利用指数使小数点的位置可以根据需要而上下浮动,从而可以灵活地表达更大范围的实数。
float 占用32位存储空间的单精度(single-precision )值。在一些处理器上比双精度更快而且只占用双精度一半的空间,但是当值很大或很小的时候,它将变得不精确。当你需要小数部分并且对精度的要求不高时,浮点型的变量是有用的。
在计算机系统的发展过程中,曾经提出过多种方法表示实数,但是到目前为止使用最广泛的是浮点表示法。相对于定点数而言,浮点数利用指数使小数点的位置可以根据需要而上下浮动,从而可以灵活地表达更大范围的实数。
float和double类型的区别如下:
1、变量类型不同
float属于单精度型浮点数据。
2、指数范围不同
float的指数范围为-127~128。
double而double的指数范围为-1023~1024
3、表达式指数位不同
float的表达式为1bit(符号位)+8bits(指数位)+23bits(尾数位)
double的表达式为1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)
4、占用内存空间不同
float占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38。
double占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308。
5、有效位数不同
float只能提供七位有效数字。
double可提供16位有效数字。
double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。
类型 | 比特数 | 有效数字 | 数值范围 |
---|---|---|---|
float | 32 | 6-7 | -3.410(-38)~3.410(38) |
double | 64 | 15-16 | -1.710(-308)~1.710(308) |
long double | 128 | 18-19 | -1.210(-4932)~1.210(4932) |
简单来说,Float为单精度,内存中占4个字节,有效数位是7位(因为有正负,所以不是8位),在我的电脑且VC++6.0平台中默认显示是6位有效数字;double为双精度,占8个字节,有效数位是16位,但在我的电脑且VC++6.0平台中默认显示同样是6位有效数字。
参考资料:
百度百科-FLOAT
百度百科-浮点型