float和double类型的内存分布和比较方法收藏

保姆级教程:用YOLOv8/9/10搞定仪表盘指针识别,附完整数据集和Python环境配置 本文提供了一份基于YOLOv8/v9/v10的仪表盘指针检测全流程指南,涵盖环境配置、数据集构建、模型选型、训练调优和部署落地等关键步骤。通过详细的代码示例和实战经验,帮助开发者高效解决工业视觉中的仪表盘检测难题,特别适合电力巡检、智能监控等应用场景。 阅读详情

C/C++的浮点数据类型有float和double两种。 
类型float大小为4字节,即32位,内存中的存储方式如下:


 符号位(1 bit)

指数(8 bit)

尾数(23 bit)


类型double大小为8字节,即64位,内存布局如下:


符号位(1 bit)

指数(11 bit)

尾数(52 bit)


  
符号位决定浮点数的正负,0正1负。 
指数和尾数均从浮点数的二进制科学计数形式中获取。 
如,十进制浮点数2.5的二进制形式为10.1,转换为科学计数法形式为(1.01)*(10^1),由此可知指数为1,尾数(即科学计数法的小数部分)为01。 
根据浮点数的存储标准(IEEE制定),float类型指数的起始数为127(二进制0111 1111),double类型指数的起始数为1023(二进制011 1111 1111),在此基础上加指数,得到的就是内存中指数的表示形式。尾数则直接填入,如果空间多余则以0补齐,如果空间不够则0舍1入。所以float和double类型分别表示的2.5如下(二进制):


符号位

指数

尾数

0

1000 0000

010 0000 0000 0000 0000 0000

0

100 0000 0000

0100 0000 0000 0000 0000 0000 0000 
0000 0000 0000 0000 0000 0000


浮点数2.5可以用二进制小数准确表示(2.5=1*(2^1)+0*(2^0)+1*(2^-1)),但很多小数不可以准确表示,其二进制形式的小数部分会无限循环,如浮点数-1.2表示如下(二进制):


符号位

指数

尾数

1

0111 1111

0011 0011 0011 0011 0011 010

1

011 1111 1111

0011 0011 0011 0011 0011 0011 0011 
0011 0011 0011 0011 0011 0011


由于对无限循环尾数的截取遵循0舍1入,尾数的第21~24位为0011,第53~56位为0011,而float尾数容量为23位,double尾数容量为52位,所以,float形式的最后三位因进位而成010,double形式则没有进位发生。 
  
类型float和double通过==,>,<等比较不会引起编译错误,但是非常可能得到错误的结果。这是因为它们的内存分布不同,不可以直接比较。正确的方法是转换为同一类型后比较两者差值,如果结果小于规定的小值,则视为相等。 
如,一个比较double的实现: 
http://metasharp.net/index.php?title=How_to_compare_double_or_float_in_Cpp 
另外,本文参考了如下webs: 
http://cdatatype.blogspot.com/2008/01/memory-map-of-floatdouble.html 
http://blog.youkuaiyun.com/hzb1983/archive/2007/09/24/1798555.aspx 
  
P.S. 
1) 
IEEE浮点数标准:     4字节浮点数:1位符号位,8位阶数(基数为127的移码),23位尾数;     8字节浮点数:1位符号位,11位阶数(基数为1023的移码),52位尾数 
2 ) 
在VC中: float数值范围约在 -10e38~10e38,并提供7位有效数字位,绝对值小于10e38地数被处理成零值 double数值范围约在-10e308~10e308,并提供15~16位有效数字,绝对值小于10e308地数被处理成零值

Ubuntu20.04下Pycharm的快速安装与配置指南 本文提供了一份详细的Ubuntu 20.04系统下PyCharm社区版的安装与配置指南。文章重点介绍了通过手动下载.tar.gz压缩包进行安装的灵活方法,并涵盖了系统准备、依赖安装、首次运行、创建快捷方式以及解释器配置等关键步骤,帮助Python开发者快速搭建高效、可控的本地开发环境。 阅读详情

相关推荐

NV 英伟达2022数字芯片笔试题

作者:数字IC打工人 链接:【开卷】第27期 NV 英伟达2022数字芯片笔试题_笔经面经_牛客网 来源:牛客网 1、Single Choice: Given thefollowing FIFO and rules, how deep does the FIFO need to be to preventunderflow or overflow? RULES: clk_A=25MHz; clk_B=100MHz; en_B is periodically asserted: period.

weixin_44072819的博客 6391

[C/C++] float和double类型的内存分布和比较方法

  C/C++的浮点数据类型有float和double两种。类型float大小为4字节,即32位,内存中的存储方式如下:  符号位(1 bit) 指数(8 bit)

vinsendai的专栏 3888

c/c++ float和double的表示范围详细解析

**float范围:** 最小负数-2\*2^127 最大负数-1\*2^(-126),0 最小正数 1\*2^(-126) 最大正数2\*2^(127)。 **double范围:** 负数:(-1.7976931348623157E+308,-4.94065645841246544E-324); 零:0 ; 正数:(4.94065645841246544E-324,1.7976931348623157E+308)。 即绝对值为0和2\^1022——2^1024。

weixin_38597669的博客 1万+

手把手教你用TBtools+MCScanX完成玉米基因家族共线性分析(附完整代码)

本文提供了一套完整的玉米基因家族共线性分析实战流程,详细讲解了如何从数据准备、格式处理开始,利用DIAMOND进行快速比对,再结合MCScanX进行核心共线性区块鉴定,最后通过TBtools实现从全基因组圈图到特定基因家族微共线性图的可视化。教程包含可直接运行的代码与常见问题解决方案,帮助研究者高效完成从命令行计算到图形化展示的全过程。

tech5的博客 591

15、SQL Server查询优化与CPU负载管理

本文深入探讨了SQL Server查询优化与CPU负载管理的关键技术,包括强制连接类型的使用、键查找问题的解决、索引设计的最佳实践、高CPU负载的排查与优化,以及并行性的利弊与调整策略。通过优化查询逻辑、合理设计索引、监控与管理CPU资源,可以显著提升SQL Server的性能和稳定性。适用于数据库开发人员和DBA进行性能调优参考。

pz8901234的博客 79

C语言 打印和查看浮点flaot的二进制表示

看了点博客, 浮点型数据的存储方式基本了解了, 感觉还是要详细打印出来才能彻底理解, 这里简单的打印所有可能的浮点模式, 帮助理解。

Potcutre的博客 977

002、搭建你的第一个Agent开发环境:Python与核心库安装

在上一篇《Agent智能体开发入门:概念、应用与前景》中,我们描绘了Agent智能体的宏伟蓝图,理解了其作为“数字员工”的巨大潜力。然而,许多开发者在迈出第一步时,常常被复杂的依赖、版本冲突和晦涩的配置所劝退,空有想法却无从下手。这种感觉就像拿到了一张藏宝图,却找不到出发的港口。本文正是你的“启航指南”。我们将彻底解决这个痛点,通过一个清晰、可复现的流程,为你搭建一个专为Agent开发量身定制的Python环境。一个纯净、隔离的Python虚拟环境,避免项目间的“依赖地狱”。一套经过验证的核心工具链。

G_RE_RE的博客 111

c ++基本数据类型_C ++中的数据类型

c ++基本数据类型Data types help the associated variables understand the type of data they can store into them. 数据类型可帮助关联的变量了解它们可以存储到其中的数据类型。 C++ Data Types C ++数据类型 C ++中的用户定义数据类型 (User-Defined Data Type...

从零开始的教程世界 1627

YOLOv11改进策略【模型轻量化】| 替换骨干网络为 GhostNet V1 基于 Ghost Module 和 Ghost Bottlenecks的轻量化网络结构

本文记录的是基于的YOLOv11网络模型轻量化方法研究。GhostNet中的Ghost模块和Ghost瓶颈结构是其轻量化的关键。Ghost模块克服了传统卷积层计算资源需求大的问题,Ghost瓶颈则合理设计了通道数量的变化以及与捷径连接的方式,能更好地在减少计算成本的同时保持较高性能,从而提升模型在移动设备上的应用能力和效率。

Limiiiing的博客 1430

【K8S系列】Kubernetes 中 Service 的流量不均匀问题【已解决】

在 Kubernetes 中,Service 是一种抽象,用于定义一组 Pod 的访问策略。当某些 Pod 接收的流量过多,而其他 Pod 的流量较少时,可能会导致负载不均衡。这种情况不仅影响性能,还可能导致某些 Pod 过载,影响应用的可用性。本文将详细分析此问题的原因及其解决方案。

颜淡慕潇 8740

浮点类型的比较

关于浮点数如何比较大小的说明

m0_73790767的博客 3632

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【转】float和double类型的内存分布和比较方法收藏

文章出处:http://www.diybl.com/course/3_program/c++/cppsl/2008629/129103_2.htmlC/C++的浮点数据类型有float和double两种。 类型float大小为4字节,即32位,内存中的存储方式如下:  符号位(1 bit) 指数(8 bit) 尾数(23 bit)

code09的专栏 662

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

float和double类型的内存分布和比较方法

转自:微点阅读https://www.weidianyuedu.com/content/1417746511214.html [c/c++] float和double类型的内存分布和比较方法 c/c++的浮点数据类型有float和double两种。 类型float大小为4字节,即32位,内存中的存储方式如下: 符号位(1bit) 符号位(1bit) 指数(8bit) 指数(11bit) 尾数(23bit) 尾数(52bit) 类型double大小为8字节,即64位,内存布局如下: 符号位决定浮点数的.

ysds20211402的博客 650

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

float与double类型的内存分布,精度和范围

float与double类型的内存分布,精度和范围  内存分布: C/c++的浮点数据类型有float和double两种。 float大小为4字节,内存中的存储方式如下:符号位(1bit)指数(8bit)尾数(23bit) double大小为8字节,内存中的存储方式如下:符号位(1bit)指数(11bit)尾数(52bit) 符号位决定浮点数的正负,0正1负。指数和

郭海朋的专栏 8598

Java 浮点数 float和double类型的表示范围和精度

隐约记得,浮点数判断大小好像有陷阱,因为底层的二进制数不能精确表示所有的小数。有事后会产生让人觉得莫名其妙的事情。

张小琦的博客专栏 8万+

float和double类型的内存分布

C/C++的浮点数据类型有float和double两种。 类型float大小为4字节,即32位,内存中的存储方式如下: 符号位(1 bit) 指数(8 bit) 尾数(23 bit) 类型double大小为8字节,即64位,内存布局如下: 符号位(1 bit) 指数(11 bit) 尾数(52 bit) ...

diche7031的博客 306

int float double 最大值,最小值及内存分布

拿32bit X86机器测试: /* coder: ACboy date: 2010-3-1 */ #include #include using namespace std; int main() { cout << "in

Sunny04的专栏 2万+

java float和double类型的表示范围和精度

转载自张小琦的博客[https://blog.youkuaiyun.com/zq602316498/article/details/41148063] 隐约记得,浮点数判断大小好像有陷阱,因为底层的二进制数不能精确表示所有的小数。有时候会产生让人觉得莫名其妙的事情。 如在java中, 0.99999999f==1f //true 0.9f==1f //false 要明白这些,首先要搞清楚float和do...

tinysakura的博客 5157

float double 比较大小问题

一、 类型float和double通过==,>, #define   eps  XXX const double eps = XXX; XXX 一般取  1e-6. 这两种都可以。 然后 用  fabs(a - b) 二、 1. 范围   float和double的范围是由指数的位数来决定的。   float的指数位有8位,而doub

lavendermaple的专栏 1779
上一篇: setsockopt()用法(参数详细说明)
下一篇: ODBC注册DSN
auragreen
博客等级 码龄19年 40粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值