C语言之数据类型②——浮点类型

1.浮点类型的种类:

  • float——4字节
  • double——8字节
  • long double——8字节(某些平台编译器,可能是16字节)

float x=1.23;——建议(float x=1.23F;)

double y=1.23;

long double z=1.23;

2.浮点类型的存储格式

float和double在存储方式上都是遵从IEEE编码规范的

以8.25为例

(1)整数部分十进制整数转二进制(除法)

  

所有的整数一定能完整的转换成二进制

(2)小数部分转二进制(乘法)

  

   总结:用二进制描述小数不可能完全精确,就像十进制描述1/3不能完全描述

 因此8.25转成浮点存储就是    1000.01——这个数用二进制的科学计数法表示就是   1.00001*23     指数为3,尾数为00001

  

 就是:01000001000001000000000000000000

  用计算器转为16进制就是:41040000

反汇编查看:

  

 

3.浮点类型的精度(整数+小数的位数)

float和double的精度是由尾数的位数来决定的

float:2^23=8388608,一共7位,这意味这最多能有7位有效数字;

double:2^52=4,503,599,627,370,496,一共16位,这意味着最多能有16位有效数字

原文地址:https://www.cnblogs.com/codexlx/p/13394084.html