Float ,   double  , long double类型:

 其中float的存储方式如下图所示:

c primer plus(第五版)读书笔计 第三章(5)_c primer plus

而双精度的存储方式为:

 

c primer plus(第五版)读书笔计 第三章(5)_c primer plus_02

 浮点类型表示方法:1。科学记数法1.0*103。2。指数记数法1.0e3。3一般记数法 如:1000

C 标准规定:float 类型必须至少能表示6位有效数字,取值的范围至少是10-37到1037.。6位有效数字指浮点数至少应能精确到小数点前6位。通常系统用32位空间来存储一个浮点数其中8位用于存储指数和符号,24位用于存储非指数的部分。(称为尾数或有效数字)及 其符号。

Double 类型:它和float的最少取值小范围相同,但它至少能表示10位的有效数字。一般的double类型使用64位而不是32位长度。一些系统将多出的32位全部用于尾数部分,这增加了数值的精度并减小了舍入误差。其它的一些系统将其中的一些位分配给指部分以容纳更大的批数,从而可以增加表达数值的范围。
Long double 类型:它满足比double 类型更高的精度要求,不过C保证它与double的精度一样。
声明 浮点变量
    他同int char 类型一样声明变量的方法。类型名 + 变量 +分号
    如:flart a ;   double b ;   long double c ;
浮点常量
     默认情况下编译器将浮点常量当作double类型。使用64位进行存储,运算完成后结果被成为float 长度。这样的作用是保证计算精度,但是会减慢程序的执行。所以C通过加后缀的方法来表示。用f或者F后缀使编译器把浮点常数当作float类型。用l或L表示当作long double 不加就是默认double .。
    C99为表示浮点常数添加了一种新的十六进制格式。使用前缀0x或0X接着是十六进制数字,然后是p或P最后是2的指数

 

     如:0xa.1fp10     整个数的十进制值为10364.0
a.1f是          1010 . 0001 1111(每一位十六进制等于四位二进制数)
                    1010 0001 1111 00  .0
                                10364  .0 
打印浮点值

//3-7.c-------使用两种方式显示浮点值

#include <stdio.h>
int main (void)
{
         float a = 3200.00f;
         double b = 2.14e9;
         long double c = 5.23e-5L;
         printf ("%f can be written %e\n",a,a);
         printf ("%f can be written %e\n",b,b);
         printf ("%f can be written %e\n",c,c);
         printf ("%Lf can be written %Le\n",c,c);
         return 0 ;
}
上溢:当计算结果是一个大得不能表达是的数时会发生上溢
下溢:当计算结果是一个小得不能表达是的数时会发生下溢
显示类型的大小:用sixeof (类型名)
// 3-8.c ----输出类型的大小
#include <stdio.h>
int main (void )
 
{
         printf ("int 类型的大小是:%u个字节\n",sizeof (int));
         printf ("char类型的大小是:%u个字节\n",sizeof (char));
         printf ("long 类型的大小是:%u个字节\n",sizeof (long));
         printf ("double类型的大小是:%u个字节\n",sizeof (double));
         return 0 ;
}