float,double 的范围和有效数字怎么算出来的?

2023-11-01

首先说一下: 
范围是3.4E-38 ——3.4E+38,可提供7位有效数字。 
上述这两个量都是近似值,各个编译器不太一样的。 

下面我就将标准值是怎么定义的,和你说一下: 
这个比较复杂,建议你找一下IEEE754标准看一下。 
这个简单说一下吧: 
在IEEE754标准中进行了单精度浮点数(float)和双精度数浮点数(double)的定义。float有32bit,double有64bit。它们的构成包括符号位、指数位和尾数位。 
这些位的构成如下: 
种类-------符号位-------------指数位----------------尾数位---- 
float---第31位(占1bit)---第30-23位(占8bit)----第22-0位(占23bit) 
double--第63位(占1bit)---第62-52位(占11bit)---第51-0位(占52bit) 

取值范围主要看指数部分: 
float的指数部分有8bit(2^8),由于是有符号型,所以得到对应的指数范围-128~128。 
double的指数部分有11bit(2^11),由于是有符号型,所以得到对应的指数范围-1024~1024。 

由于float的指数部分对应的指数范围为-128~128,所以取值范围为: 
-2^128到2^128,约等于-3.4E38 — +3.4E38 

精度(有效数字)主要看尾数位: 
float的尾数位是23bit,对应7~8位十进制数,所以有效数字有的编译器是7位,也有的是8位

  • float 为4个字节,表示为:一个符号位,8个指数位,23个尾数,所以有效位数由尾数来决定,即2^23=8388608为7位,指数的范围是2^(-127~127)

double为8个字节:表示为:一个符号位,11个指数位,52个尾数来表示,所以有效位数为

2^52=4503599627370496为15位,指数的范围为2^12-1=4095(-2047~2047)


转自:http://hi.baidu.com/yu_xiyan/blog/item/461482dbb32d0c6dd1164edf.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

float,double 的范围和有效数字怎么算出来的? 的相关文章

  • 使用 #pragma Once 和 #ifndef 时出现 VS 2010 C++ LNK2005 错误

    1 gt Deck obj error LNK2005 class Card card card 3VCard A already defined in Card obj 1 gt PokerTester obj error LNK2005
  • 无法使用c#更改视频捕获分辨率

    我正在尝试使用 C 中的 DirectShowNet 更改默认网络摄像头分辨率 据我所知 我需要通过调用 windows win32 api dll 中内置的 VideoInfoHeader 类来更改它以进行 avi 捕获 我有来自 Dir
  • getline 之后返回到文件开头

    所以我已经从文件中读取了所有行 while getline ifile line logic 其中 ifile 是 ifstream line 是字符串 我的问题是我现在想再次使用 getline 并且似乎无法返回到文件的开头 因为运行 c
  • strtok() 使用安全吗[重复]

    这个问题在这里已经有答案了 我读到了很多负面的东西strtok 有人说它已经过时 有人说它不是线程安全的 等等 那么真相是什么 我可以使用吗strtok 它是线程安全的吗 Note 我正在使用 Visual C 您可以使用它 它是标准库的一
  • C# 异步任务比同步慢

    你知道为什么同步斐波那契方法比异步 等待更快并且比异步任务更快吗 我在每个项目方法上都使用了异步 所以主要是这是一个非常糟糕的方法 Code static int FibonacciSync int number if number 0 r
  • 信号与信号2

    我的应用程序可能会受益于使用 boost 的信号库之一而不是本土解决方案 该应用程序是多线程的 但执行信号处理的部分是单线程的 如果多线程不是问题 是否有任何理由更喜欢 Boost Signals2 而不是 Boost Signal Boo
  • C# 中类似图的实现

    所以我有一个对象 我们称之为 Head 它有一个对象列表 C C1 C2 C3 T T1 T2 和 M M1 M2 并且所有这些都是相互关联的 例如 Head gt C1 C2 C3 T1 T2 M1 M2 T1 gt C1 C2 T2 g
  • 如何使用c#从数据桶中获取所有文档?

    如何获取数据桶中的所有文档 我尝试过一个示例 但我只能获得一个特定的文档 这是我的代码 CouchbaseClient oclient oclient new CouchbaseClient vwspace data bucket name
  • 如何通过 libwebsocket 发送异步数据?

    我正在将 Warmcat 的 libwebsocket C 库用于小型 Websocket 服务器 我已经启动并运行了这些示例 并且可以发送数据以响应从 websocket 接收数据 例如回显发送的反向字节 但是 我无法弄清楚如何在不使用
  • C++ 指针和对象实例化

    这有效 MyObject o o new MyObject 而这并不 MyObject o new MyObject Why 关键词new 返回一个指针 http msdn microsoft com en us library kewsb
  • 选择initializer_list迭代器定义

    Why std initializer list
  • 为什么像 BindingList 或 ObservableCollection 这样的类不是线程安全的?

    我一次又一次发现自己必须编写 BindingList 和 ObservableCollection 的线程安全版本 因为当绑定到 UI 时 这些控件无法从多个线程更改 我想理解的是why情况就是这样 这是设计错误还是故意的 问题是设计一个线
  • 如何在 Visual Basic DLL 和 C++ DLL 之间创建隔离/免注册 COM?

    我必须在 C DLL 中使用 VB COM DLL 我弄清楚了如何从 C DLL 访问 VB COM DLL 并且它可以工作 现在我遇到了一个问题 我必须使用隔离的 COM 免注册 COM 因为我无法在必须使用它的每台 PC 上注册 DLL
  • 如何在 C++ 和 QML 应用程序中使用 qrc?

    我在 Windows7 上用 c qnd Qt Creator QML 编写了 Qt Quick Desktop 应用程序 现在 我必须部署它 并且我需要隐藏 qml 文件和图像 意味着 将它们放入资源等中 我读到有一个很好的方法可以使用
  • asp.net core http 如果没有内容类型标头,则删除 `FromBody` 忽略

    我在 http 中使用 bodyDELETE要求 我知道目前删除主体是非标准的 但是允许的 使用时出现问题HttpClient它不允许删除请求的正文 我知道我可以使用SendAsync 但我宁愿让我的 API 更加灵活 我希望这个机构是可选
  • 检查两个函数或成员函数指针的签名是否相等

    我编写了一些代码来检查自由函数的签名是否等于成员函数的签名等 它比较提取的返回类型和函数参数 include
  • ASP.NET MVC 动作过滤器

    有谁知道即使在 CATCH 块中 ActionFilterAttribute 类的 OnResultExecuted 方法是否也会执行 ie CookiesActions public ActionResult Login Usuarios
  • Windows 上本机 C++ 应用程序中的自动死代码检测?

    背景 我有一个用原生 C 编写的应用程序 花了几年的时间 大约有 60 KLOC 有很多函数和类已经死了 可能有 10 15 就像下面提出的类似的基于 Unix 的问题 我们最近开始对所有新代码进行单元测试 并尽可能将其应用于修改后的代码
  • 调试错误:在 vc++ 项目中使用 COM 时发生 所需的运行时?

    我为我的工作创建了一个 COM 组件 我也注册了该组件 在我的系统上 我有两个虚拟机工作站 在我的第一个工作站中 它运行良好 在我的第二个工作站中 它显示一个包含消息的错误框该程序需要一段时间并以不寻常的方式关闭 请联系应用程序管理员 我认
  • C - 获取外部IP地址

    我需要通过 C C 调用获取我的公共 IP 地址 我知道作为替代方案 我可以从 http whatismyip akamai com 等外部链接获取 我写了一个示例来获取外部IP地址 但我的程序没有返回外部 IP 地址 我正在获取内部 IP

随机推荐

  • Qt 进程间通信

    Qt进程间通信的方法 TCP IP Local Server Socket 共享内存 D Bus Unix库 QProcess 会话管理 TCP IP 使用套接字的方式 进行通信 之前介绍了 这里就不介绍了 Local Server Soc
  • 用Tensorflow Agents实现强化学习DQN

    在我之前的博客中强化学习笔记 4 深度Q学习 gzroy的博客 CSDN博客 实现了用Tensorflow keras搭建DQN模型 解决小车上山问题 在代码里面 需要自己实现经验回放 采样等过程 比较繁琐 Tensorflow里面有一个a
  • C/C++编程:模板特例

    为什么要引入 单一模板很难兼顾各种情况 为此 C 提供了一种特例机制 对于某个已有模板 可以为某个或者某组模板参数类型另外指定一种变体 以应对原模板无法处理的情况 或者提供更高效的实现方案 这就是模板特例 实例 vector
  • win7 & centos7 双系统安装方法

    1 准备 1 Centos7镜像 官方 https www centos org 阿里镜像64位 http mirrors aliyun com centos 32位 https mirrors aliyun com centos alta
  • 计算机专业考哪些证书含金量高?考到就能加薪吗

    计算机专业要不要考证 考证很重要吗 考哪个好 对于有些人而言 他们可能会有人认为认证就是一张纸 没有太大的用处 看到大家都在考 心里又会产生动摇 还有人会认为考证的价格太高 担心自己没有办法考上白白浪费自己的金钱和时间 或者还有的人在认证的
  • MarkDown中写E-R图、甘特图、饼图的方法

    目录 序 E R 图 E R图的构成 关系的类型 关系的存在性 关系的语法 Mermaid中E R图的简单例子 样例 实体与关系的表示 属性的表示 特殊约束关系的表示 甘特图 Mermaid中甘特图的简单例子 样例 甘特图的标题 子任务的表
  • 如何进阶优秀数据分析师行列?方法、技术与工具,缺一不可!

    更多精彩推荐 请关注我们 入行数据分析师 从来都不是一蹴而就的 好比钓鱼 不是简单地把诱饵放上鱼钩 然后扔到水中 就可以有鱼上钓 方法 技术与工具 缺一不可 什么是举一反三 什么是学以致用 什么是融会贯通 不是靠一味地执著和花时间就可以达到
  • ajax发送post请求报403

    ajax发送post请求报403 检查提交的参数是否和后端接收的参数是否一直
  • 2022最新阿里Java面经,转疯了

    写在前面 最近 很多小伙伴出去面试都被问到了Spring问题 关于Spring 细节点很多 面试官也非常喜欢问一些很细节的技术点 所以 在 Spring 专题中 我们尽量把Spring的每个技术细节说清楚 将透彻 概述 自定义组件要想使用S
  • QCustomplot基本使用(一)

    文章目录 简述 下载 使用 简述 QCustomPlot是一个基于Qt C 的图形库 用于绘制和数据可视化 制作漂亮的2D图 曲线图 趋势图 坐标图 柱状图等 并为实时可视化应用程序提供高性能服务 它没有进一步的依赖关系 并有着良好的文档记
  • 环境配置相关

    anaconda pip无法识别 win10安装了Anaconda之后 未设置环境变量 想用pip命令导入第三方库 在anaconda文件夹下打开命令窗口 输入pip install tensorflow 报错如下 pip 无法将 pip
  • NFT数字藏品平台开发——如何快速搭建搭建数字藏品平台

    2021年可以称为元宇宙年 随着元宇宙概念的兴起 好多人都在关心我们是否可以成功构建元宇宙 显然是可以实现的 2022年年初 NFT在国内的热潮兴起 国内也称之为数字藏品 NFT由于具有不可置换 不可分割的特性 很快在国内掀起一热潮 西西弗
  • 线程间的通讯

    一 为什么需要线程通讯 线程是操作系统调度的最小单位 有自己的栈空间 可以按照既定的代码逐步的执行 但是如果每个线程间都孤立的运行 那就会造资源浪费 所以在现实中 我们需要这些线程间可以按照指定的规则共同完成一件任务 所以这些线程之间就需要
  • LoadRunner--并发测试(多用户)

    并发测试 多用户进行并发测试 即在同一时刻同时进行某种操作 1 何时使用集合点 并发测试时使用 2 并发测试的两个条件 1 脚本中加入集合点 在事务开始之前添加集合点 则所有虚拟用户执行到集合点时停止 等待并发 2 控制台中设置集合点策略设
  • TypeScript 枚举(enum)

    枚举定义 枚举通过enum关键字来定义 使用枚举我们可以定义一些有名字的数字常量 enum Direction Up 1 Down Left Right 枚举成员 一个枚举类型可以包含零个或多个枚举成员 枚举成员具有一个数字值 它可以是常数
  • UE4 碰撞射线检测

    默认 TraceTypeQuery1 Visibility 默认 TraceTypeQuery2 Camera void ATraceCharacter traceByChannel 获取该组件的拥有者 AActor MyOwner Get
  • 快速安装Jupyter Notebook主题皮肤并设置教程

    Jupyter Notebook的默认背景主题是白色 字体还不符合自己的眼光 看着实在费眼 也不够酷炫 我就不多赘述了 现在就来给我们的Jupyter notebook画一下妆 让它变得更加炫酷吧 1 安装 Jupyter 主题 通过命令行
  • PHP作业,cookie实现保存浏览历史,代码、运行截图、注释

    1 练习cookie的基本用法 理解cookie的工作原理 2 设计一个商品列表页面 数据从数据库读取 单击每个商品时 在新页面显示商品详情 通过cookie实现保存商品浏览历史 并显示在商品详情页的下方 浏览历史最多保存3条 提交代码截图
  • 两个有序序列的中位数(详解)

    1 实践题目 7 3 两个有序序列的中位数 2 问题描述 在一行中输出两个输入序列的并集序列的中位数 时间复杂度不能大于O logn 3 算法描述 不能粘贴程序 因为时间复杂度不能大于logn 所以把原序列排好序再来找中位数是不可能的了 快
  • float,double 的范围和有效数字怎么算出来的?

    首先说一下 范围是3 4E 38 3 4E 38 可提供7位有效数字 上述这两个量都是近似值 各个编译器不太一样的 下面我就将标准值是怎么定义的 和你说一下 这个比较复杂 建议你找一下IEEE754标准看一下 这个简单说一下吧 在IEEE7