float:1bit(符号位)+8bits(指数位)+23bits(尾数位)
double:1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)

[尾数是指把一个二进制改写成标准的科学计数法 (必须以1.XX的形式,例如1.001*2^1101) 后,小数点后面的小数部分(001)。]

[指数位的第一位也是符号位]

(浮点)数值 =(符号) (1.尾数)×(2)^(带符号的指数)

指数位决定了表示范围:float指数范围 -2^7~2^7-1, 即 -128~127,所以float的范围是 2^-128~2~^127.  double同理

尾数位决定了表示精度:float尾数范围 2^23, 即8 388 608, 所以float的精度是二进制的小数点后23位精度,十进制的小数点后6~7位.  double同理。

附加:

将一个float型转化为内存存储格式的步骤为:

(1)先将这个实数的绝对值化为二进制格式。 
     (2)将这个二进制格式实数的小数点左移或右移n位,直到小数点移动到第一个有效数字的右边。 
     (3)从小数点右边第一位开始数出二十三位数字放入第22到第0位。 
     (4)如果实数是正的,则在第31位放入“0”,否则放入“1”。 
     (5)如果n是左移得到的,说明指数是正的,第30位放入“1”。如果n是右移得到的或n=0,则第30位放入“0”。 
     (6)如果n是左移得到的,则将n减去1后化为二进制,并在左边加“0”补足七位,放入第29到第23位。如果n是右移得到的或n=0,则将n化为二进制后在左边加“0”补足七位,再各位求反,再放入第29到第23位。

举例:01101.1100011101 ----->1.1011100011101*(2^11)  则1011100011101存进尾数部分,11存进指数部分。

将一个内存存储的float二进制格式转化为十进制的步骤: 
 
 (1)将第22位到第0位的二进制数写出来,在最左边补一位“1”,得到二十四位有效数字。将小数点点在最左边那个“1”的右边。 
  (2)取出第29到第23位所表示的值n。当30位是“0”时将n各位求反。当30位是“1”时将n增1。 
  (3)将小数点左移n位(当30位是“0”时)或右移n位(当30位是“1”时),得到一个二进制表示的实数。 
  (4)将这个二进制实数化为十进制,并根据第31位是“0”还是“1”加上正号或负号即可。

float, double 的表示范围和精度相关推荐

  1. double取值范围 java_Java中float/double取值范围与精度

    Java浮点数 浮点数结构 要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法,浮点数的结构组成,之所以会有这种所谓的结构,是因为机器只认识01,你想表示小数,你要机器认识小数点这个 ...

  2. float 范围 java_Java中float/double取值范围与精度

    Java浮点数 浮点数结构 要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法,浮点数的结构组成,之所以会有这种所谓的结构,是因为机器只认识01,你想表示小数,你要机器认识小数点这个 ...

  3. 关于float/double的取值范围、精度和表示

    https://blog.csdn.net/shenziheng1/article/details/79471340 1.float和double的范围和精度 float和double的范围是由指数的 ...

  4. float和double取值范围和精度问题

    1.八种数据类型的分类如下:  第一类:整型 byte short int long 第二类:浮点型 float double 第三类:逻辑型 boolean(它只有两个值可取true false) ...

  5. 转载——C语言中float,double类型,在内存中的结构(存储方式)

    最近在做一个数据格式分析和转换的项目,第一次接触底层的二进制代码存储,看的一头雾水,看到这个帖子后对于在Windows系统下数据的存储方式有了更多的了解,将原文分享一下: 原文地址为http://ww ...

  6. C语言的int, float,double相互转化 (从本质上理解可能的问题)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/github_33873969/article/details/78040129 从学了C语言之后,一 ...

  7. C语言中float,double类型,在内存中的结构(存储方式).

    从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以double能存储更高的精度. 任何数据在内存中都是以二进制(0或1)顺序 ...

  8. android float类型保留两位小数_你知道MySQL中Decimal类型和Float Double的区别吗?

    出处:cnblogs.com/panchanggui/p/10766607.html MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,flo ...

  9. C语言-浮点型(float/double/E)

    相关文章:C语言-printf变参函数与它的实参转换/转换模板 float 4个字节 7位精度 double 8个字节 15位精度 long double 8个字节,有些编译器16字节,long do ...

最新文章

  1. 二叉树深度优先 java_二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历) java实现...
  2. liunx 学习笔记-wzq
  3. 关于“AI是不是胡扯”之争:这是中国科技圈的胜利
  4. SQL Server 问题之 排序规则(collation)冲突
  5. ReviewForJob——希尔排序(缩小增量排序)之塞奇威克增量序列
  6. Fiddler工具杂记-将某些数据收集起来并且发送HTTP数据包
  7. SQL Server应用程序中的高级SQL注入
  8. Ubuntu 14.04 更换阿里云源
  9. 没有安装python如何运行py_在没有安装Python的前提下,让Sublime text编辑器来运行Py?...
  10. 学习笔记(01):2020软考网络工程师--基础知识视频教程-计算机硬件基础(一)
  11. Java实现文件上传详解
  12. C语言lo如何优化运行界面,高质量程序优化总结整理【经典】
  13. 发送微信模板消息+定时任务
  14. CMS垃圾回收器详解
  15. 暑假实习面经 | 华为通用软件开发
  16. Python 极简插件系统 pluggy 源码剖析
  17. 三电平逆变器的学习与仿真
  18. mysqldump: Error: Binlogging on server not active
  19. bars 除障句完整_日语常用会话1000句(注音版)
  20. 非root用户安装Anaconda3 + setuptools + phonopy模块

热门文章

  1. 凸包计算几何matlab,计算几何-凸包算法 Python实现与Matlab动画演示
  2. html input text自动适应,HTML 自适应高度的输入框
  3. 太阳系c语言代码大全,C生万物,编程之本!
  4. socketio跨域问题解决
  5. pandas读写Excel表格数据
  6. 【ModBus】modbus之功能码详细讲解(2)
  7. 零基础搭建网站(保姆级教程)
  8. Linux环境搭建记录——Jenkins安装
  9. 14.2.2 实现和运行颜色滤镜
  10. ecstore 手机端 收货地址 ajax效果异常的排查