1问题的提出

最近在学习过程中,遇到了题目中出现的陈述,但是对于原因没有头绪,同时在互联网上很难找的到合理的我想要的解释,因此我搜罗了一些前人的知识,结合自己的理解,总结一下。

2问题的解释

首先,float单精度浮点型,计算机会分配4字节,32位来进行存储,而double float双精度浮点型,计算机则会分配8个字节,即64位来进行小数的存储,这是后面进行详细解释的必备知识。
其次,计算机在存储浮点型数据时,会将浮点型数据分为3个部分来进行存储(至于为什么,规定),分别为:
(1)符号位(这个熟悉整型的二进制存储应该知道的,首尾二进制0表示正数,1表示负数,不多说,占一个字节);
(2)指数部分(计算机使用浮点型存储时,会将源数据转换为科学计数法来存储,例如,8.25,转化为二进制为1000.01,然后转化为科学计数法,注意是2进制,将底数10换为2为,1.00001 × 2的3次方,指数为3,这个指数部分的数据就是存储着源10进制数据转换为2进制时科学计数法表示的指数相关,这里说的是相关,并不是存储着3,多说一句,这个指数部分的首位二进制表示着指数的正负,换句话说,1表示源十进制数的绝对值大于等于1,0表示小于1,更多了解,自行见文尾参考链接
(3)尾部存储的是二进制科学计数法的所精确的小数数值(二进制存储),例如1.00001 × 2的3次方的00001,超出存储位数‘四舍五入’,不足位数补向左补0.
具体float和double float见下图:
float类型:

double float类型

至于其中的指数部分为什么是8和11,没法解释,这么设计的。
即,符号位都是表示源十进制数据的正负,指数部分的首位都是0或1表示二进制科学计数法的指数正负,其余位数存储着和指数相关的值,最后尾数部分存储着二进制科学计数法的小数部分数值。
因此,尾数部分决定着精确的实际能够存储的十进制数据位数精度:
(1)单精度:23位能存储的数据量为2的(23+1)次幂为16777216,结果取10常用对数发现,在7和8之间,因此,精度最大不要超过7位小数,常常称为不要超过6位
(2)双精度:相应地,对于双精度的64位存储,去掉首尾符号位1字节和指数部分的11字节,尾数的52字节能存储最大数据量为2的(52+1)次幂为9007199254740992,同样发现,最大的十进制小数位位数16~17之间,因此最好不要超过15位

最后

不知道大家有没有理解,下面是我发现写的非常好的文章,有更深度需求的同学可以参考。
参考链接:https://www.cnblogs.com/Reverse-xiaoyu/p/11618913.html

关于单精度浮点型精确位数7~8以及双精度浮点型精确位数15~16的解释相关推荐

  1. 单、双精度浮点型转换为十六进制方法

    在透传测试时,遇到了数据转换的问题,在此处总结: 一.对于字节: 一字节(byte)为8bit,数据范围:2^7~-2^7; 单精度浮点型为4个字节,双精度浮点型为8个字节: 二.单精度浮点型计算 4 ...

  2. C语言 —— float单精度浮点型与double双精度浮点型的使用

    float单精度浮点型与double双精度浮点型的使用 一.float与double类型介绍 二.例题:求圆的周长与面积并保留两位小数 三.总结 一.float与double类型介绍 代码: #inc ...

  3. 单精度浮点型(float)和双精度浮点型(double)的区别

    数据类型 关键字 占用字节数 默认数值 取值范围 单精度浮点型 float 4 0.0F 负数范围:-3.4028235E+38~-1.4E-45 正数范围: -1.4E-45~3.4028235E+ ...

  4. 正则表达式实现手机号中间4位数隐藏或者只显示末尾四位数

    下面看下正则表达式实现手机号中间4位数隐藏或者只显示末尾四位数 ? 1 2 // 匹配手机号首尾,以类似"123****8901"的形式输出 '12345678901'.repla ...

  5. c语言 正整数 几位 逆序,c语言经典例题:正整数求位数and求顺、逆序位数

    经典例题:正整数求位数and求顺.逆序位数 题目要求: 给出一个int整形正整数,要求: 1.求出它是几位数字 2.按照逆序分别输出每位数字,例如123输出为321 3.按正序输出每位数字 分析: 一 ...

  6. c语言求字符串转换成双精度_C语言如何输出双精度浮点型数据

    展开全部 double,双精度浮点型,输出使用%lf.e68a843231313335323631343130323136353331333365666166short int,短整型,输出对应%d. ...

  7. 【译】将字符转换为双精度浮点型

    目录:https://www.cnblogs.com/liqingwen/p/10261436.html 包含数字的字符可以使用 char.GetNumericValue 方法转换为数字(双精度浮点型 ...

  8. java实现809*两位数=800*两位数+9*两位数,求出两位数的值。其中8*两位数的结果为两位数,9*两位数的结果为三位数

    java实现809*??=800*??+9*??,求出??的值.其中??代表的是两位数,8*??的结果为两位数,9*??的结果为三位数 1 分析 1.1 此题需要控制台进行输入吗? 解答:不需要 1. ...

  9. C# 输入一个三位数的字符串,输出为三位数的整数,并输出百位、十位、和个位

    C# 输入一个三位数的字符串,输出为三位数的整数,并输出百位.十位.和个位 以C# 语言编写,控制台应用程序运行 文章目录 C# 输入一个三位数的字符串,输出为三位数的整数,并输出百位.十位.和个位 ...

最新文章

  1. Android控件系统(三)——Window与WindowMananger
  2. 一张图,看编程语言十年热度变化
  3. Speedata uhf_7.6.3.jar错误硬代码问题
  4. .NET 数据访问架构指南(转)
  5. pomelo php,Nginx 502 Bad Gateway 自动重启shell脚本
  6. Elasticsearch系列「二」如何物理删除给定期限的历史数据?
  7. IDEA中如何配置Tomcat和项目?
  8. Openlayer:学习笔记之解析地图组成
  9. 调用另一个cpp的变量_编写一个LLVM后端
  10. Xshell上传文件的方法和在docker打开lrzsz
  11. 电脑没有声音提示“外设似乎没有插上”怎么办
  12. Java中使用isAlphabetic()办法无法解决判断一个char是英文字母,该用别的方法解决
  13. Goolgle knowledge graph API使用
  14. Linux如何安装pcre
  15. WordPress添加站点图标与底部备案信息
  16. acwing 1904 奶牛慢跑
  17. 黑莓手机无法上网解决方案
  18. linux使用及shell常用命令技巧
  19. sql 纵向求和_SQL语句求和语句该怎么编写?有几种方法?
  20. 关于电阻屏与电容屏的区别

热门文章

  1. bat文件ping服务器,Windows下Ping一段IP地址的BAT
  2. 【关于python中整除与取余】
  3. linux 挂在u盘变成只读,linux系统下优盘挂载之文件系统后只读解决方法
  4. 计算机工作中只读不写,u盘实现只读不写方法
  5. Guava学习笔记(转)
  6. 【RCNN】论文翻译-用于精确物体定位和语义分割的丰富特征层次结构
  7. 传奇GOM引擎登陆器配置教程 GOM登陆器配置详解 GOM引擎登陆器图文教程
  8. Mac浏览器有好多种,那么哪款好用呢?
  9. mac上Latex的安装及使用教程
  10. python多窗口传递信息_PyQT5 中两个界面之间数据传递