C语言菜鸟基础教程之单精度浮点数与双精度浮点数

  

上节课简单介绍了浮点数。计算机程序中的浮点数分为单精度浮点数和双精度浮点数。

  

单精度和双精度精确的范围不一样。

  

计算机里的最基本的存储单位用位(比特)来表示.bit只能用来存储0或1。
  稍大一点的单位是字节(字节,简写为B)。
  再大一级的是千字节(千字节),用k来表示。
  再大一级的单位是兆字节(兆字节),用M来表示。一张照片的大小通常为1 ~ 3 M。
  再大一级的单位为g .一部高清电影的大小通常为1 ~ 2 g。
  再大一级的单位为t .

  

换算关系为:

  

1 b=8位
  1 k=1024 B=2 ^ 10 B
  1米=1024 k=2 ^ 20 B
  1 g=1024=2 ^ 30 B
  1 t=1024 g=2 ^ 40 B

  

单精度(漂浮)在计算机中存储占字用4节,32位,有效位数为7位(6位小数+小数点)。
  双精度(double)在计算机中存储占用8字节,64位,有效位数为16位(15位小数+小数点)。
  不管是浮动还是翻倍,在计算机中的存储都遵循IEEE规范,使用二进制科学计数法,都包含三个部分:符号位,指数位和尾数部分。其中浮动的符号位,指数位(即整数部分),尾数部分分别为1,8日23。双精度则分别为1,11日,52岁。

  

 C语言菜鸟基础教程之单精度浮点数与双精度浮点数

  

浮动   

 C语言菜鸟基础教程之单精度浮点数与双精度浮点数

  


  

  

精度主要取决于尾数部分的位数,浮点数为23位,最小为-23次的方,约等乘于1.19以10的7次方,所以浮动小数部分只能精确到后6位面,加上小数点算做一位,即有效数字为7位。
  类似、双尾数部分52位,最小为-52次的方,约为2.22乘以10的-16次方,所以精确到小数点后15位,有效位数为16位。

  

程序验证:

        # include & lt; stdio.h>      int main ()   {      浮动=1.123456789;   printf ("=% 20.9 f \ n ", 1);      双b=2.123456789;   printf (" b=% 20.9 f \ n”, b);      返回0;   }      之前      

注意:这里% 20.9 f表示浮点数总共有20位,其中小数占9位。不足20位的部分,左侧用空格来填充。

  

运行结果:

        一个=1.123456836   b=2.123456789   之前      

从运行结果可以看的出,单精度浮点数小数部分只有前6位是准确的,后三位是不准确的。双精度小数部分9位都是准确的。

C语言菜鸟基础教程之单精度浮点数与双精度浮点数