float和double类型的内存分布和比较方法
更新时间:2024-04-28 04:00:01 阅读量: 综合文库 文档下载
- 分别定义float推荐度:
- 相关推荐
[C/C++] float和double类型的内存分布和比较方法
C/C++的浮点数据类型有float和double两种。
类型float大小为4字节,即32位,内存中的存储方式如下: 符号位(1bit) 符号位(1bit) 指数(8bit) 指数(11bit) 尾数(23bit) 尾数(52bit) 类型double大小为8字节,即64位,内存布局如下: 符号位决定浮点数的正负,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 0 指数 1000 0000 100 0000 0000 尾数 010 0000 0000 0000 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 1 指数 0111 1111 011 1111 1111 尾数 0011 0011 0011 0011 0011 010 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.csdn.net/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地数被处理成零值
正在阅读:
珠宝店周年庆活动方案04-06
慢病自我管理小组活动07-22
北师大版八年级数学下册期末复习题04-12
06091薪酬管理03-16
线极化微带天线阵列的设计04-24
国家行政机关公文格式09-07
西关小学科技创新大赛科技小论文07-12
第四次Java实验报告10-19
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 分布
- 内存
- 类型
- 比较
- 方法
- double
- float
- 塑料三通模具设计说明书
- 软件界面设计及编码标准规范
- 牛头刨床课程设计12 4点位置说明书
- 教科版六年级语文上册单元测试题全套及答案
- 酉卫防保〔2011〕9号基本公共卫生服务实施方案 - 图文
- 中期报告要点研究工作主要进展 - 图文
- Linux纸质作业 练习2
- 甲沟炎的治疗方法与效果对比
- 人工真皮联合中厚皮片移植治疗足踝部骨肌腱外露护理体会
- 热力管网及换热站课程设计
- 1湖北省武汉市黄陂区蔡家榨镇基1422)
- 省公安厅公安车载视频文件
- 《水利工程营业税改征增值税计价依据调整办法》(办水总2016]132
- 尔雅(超星)马克思主义基本理论课后作业答案整理
- 劳动合同续签审批表
- 中财下练习
- 筒仓装车电源系统改造方案
- 体格检查复习题及答案
- 马克思为什么是对的 读书笔记
- 计算机信息管理系统在医院中的应用(1)