大白话说float型的精度和范围

考研复习C++看到书上写float的范围为-3.4×1038 ~ 3.4×1038,有效数字为7位,不太明白,看了几篇大佬的博客后略知一二。
自己尝试把一些晦涩的词汇用浅显的话再解释一遍,总结的可能不是很专业全面,希望对同样入门的小伙伴有所帮助。

关于float的结构

float型数据共占4个字节即32位
其中1位符号位,8位指数部分,23位尾数部分

在内存中按逆字节存储(即顺序与上图相反)

float表示数据的原理

先看科学计数法
对于十进制数10.25 科学计数法为1.025×101
换算为二进制为1010.01 科学计数法为1.01001×23

可以看出任意一个实型数可用二进制科学计数法表示为a×2b
其有效数字的范围a∈[1,2),即1.xxxx的形式,
整数部分1我们不管,把小数点后边的部分xxxx存储起来就是尾数部分m(23位)

而指数部分2b 的幂b就存储为指数部分e (8位)
这样数据的表示方法就是(1+m)×2e

float型的范围和精度

说清楚表示原理再解释范围和精度就比较方便了
由上述可得尾数部分m的范围为0.000…0.000~0.111…111,十进制为[0,1-2-23],再加上前面不管的整数部分1,有效数字的范围为[1,2-2-23]

那么就可以解释精度了。由于尾数部分位数是固定的小数点后23位,23位所能表示的最大数是2^23−1=8388607,所以float最多能表示小于1/8388607的精度,即7位有效数字。

再看指数部分e,8位指数部分[0,255],其中0和255分别用来表示0和无穷大,1~254用来表示规范数字,可以表示的范围为[-126,127],所以科学计数法的后半部分范围为[2-126,2127]

综上把有效数字和指数合起来看便能得到(1+m)×2e
绝对值最小值1.0×2-126≈1.175×1038
绝对值最大值(2-2-23)*2127≈3.4×1038

参考博客
准确详解:C/C++ float、double数据类型的表示范围及精度.
c++ float类型研究.
有补充及不足希望在评论区指出,谢谢

大白话说float型的精度和范围相关推荐

  1. float,double等精度丢失问题

    来自MSDN的解释: http://msdn.microsoft.com/zh-cn/c151dt3s.aspx 为何浮点数可能丢失精度浮点十进制值通常没有完全相同的二进制表示形式. 这是 CPU 所 ...

  2. 【Java面试题】用float型定义变量:float = 3.14;,是否正确?

    题目: 用float型定义变量:float = 3.14:,是否正确? 解析:不正确,赋值运算符(=)左右两边的精度类型不匹配.在默认情况下,包括小数点的实数,如本题中的3.14,被存储为double ...

  3. js小白操作:判断空值、判断数组最大最小值、判断map是否为空、字符串转int、取float型小数点后两位数、判断数组中是否包含某个对象

    js小白操作:判断空值.判断数组最大最小值.判断map为空的情况.字符串转int Js基础操作 一.判断空值 undefined 和 null 二.判断map是否为空 三.取数组最大最小值 1.使用 ...

  4. float计算丢精度_float精度损失 int 转 float 为什么有时会丢失精度

    float型运算为什么会损失精度 float占用32bit,其中24bit用于表示有效数字. float rv = 0.0; rv = 88889999;为什么调试程序的时候发现赋值后rv 编程由于字 ...

  5. float型数据与4字节之间的转换

    文章目录 一.前言 二.地址指针转换的方法 三.共用体的方法(注意要定义全局变量数组s,即地址要分配为固定地址) 一.前言 在与上位机之间进行数据收发,要将float型数据转换成字节进行传输,根据fl ...

  6. java float 加法_Java-杂项:Float 加减精度问题

    java float 加减精度问题 在取这个字段的时候转换成BigDecimal就可以了 同时,BigDecimal是可以设置精度的. float m = 12.22F; float c = 1.22 ...

  7. 大白话说Java泛型:入门、使用、原理

    文章首发于[博客园-陈树义],点击跳转到原文<大白话说Java泛型:入门.使用.原理> 远在 JDK 1.4 版本的时候,那时候是没有泛型的概念的.当时 Java 程序员们写集合类的代码都 ...

  8. Js取float型小数点后两位数的方法

    转自:http://www.jb51.net/article/45884.htm 以下我们将为大家介绍 JavaScript 保留两位小数的实现方法: 四舍五入 以下处理结果会四舍五入: ? 1 2 ...

  9. 大白话说Java反射:入门、使用、原理,BAT 面试官 如何面试

    写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. 文章 ...

最新文章

  1. C基础知识小总结(十)
  2. 拨号用户如何使用局域网上的LinuxSamba服务器
  3. 将集转换为列表而不创建新列表
  4. 网络入侵检测规避工具fragrouter
  5. BUU_刷题之旅(One)
  6. 使用promise解决回调地狱_「每日一题」Promise 是什么?
  7. 删了的微信怎么恢复?
  8. Paper and Codes Leaderboard
  9. 快速从入门到精通!mysql字符串截取前两位
  10. Bailian2939 玩游戏【模拟】
  11. Vue学习笔记之04-computed计算属性
  12. 多模态综述 | 一文了解Language-Vision预训练最新进展和新领域
  13. 在MACBook笔记本上通过Safari 访问EBS系统
  14. 小程序学习笔记(6)-菜谱小程序的制作
  15. 水逆了一整年的王源,2020年年初能靠《大主宰》翻身吗?
  16. 用ChatGPT处理word表格数据:直接采用ChatGPt和利用ChatGPT编写python脚本两种方法
  17. Exchange2003一些基础问题(转)
  18. 元宇宙发展研究报告2.0版本(清华大学)
  19. 极性电容为什么具有单向导电性(阀金属与氧化膜)
  20. DTV 学习(一) 基本概念、分类

热门文章

  1. x264的一些编码参数
  2. unity中如何锁定运行帧率
  3. 将Hugging Face模型转换成LibTorch模型
  4. 2020年普利兹克建筑奖:女性建筑师的野性魅力!
  5. 移动端div背景图出现白边
  6. 几个步骤解决linux做ssh免密之后ssh登陆任然需要密码问题
  7. 厦门理工 oj 1003 第三届程序设计大赛 让气球飞起来
  8. matplot画图处理
  9. 抖音收益来源,抖音没有播放量有收益吗,如何提高播放量?
  10. 如何在Linux上使用strings命令