- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
float与double的范围和精度
float和double的区别
1.double是双精度浮点数,内存占8个字节,效数字16位,表⽰范围是-1.79E+308~-1.79E+308。
float是单精度浮点数,内存占4个字节,效数字8位,表⽰范围是-3.40E+38~3.40E+38。
2.两者处理速度不同,CPU处理float的速度⽐处理double快。double的精度⾼,double消耗内存是float的两倍。
3.如果不声明,⼩数默认是double类型,⽤float时需要进⾏强转,或者在⼩数后加上f。
float与double的范围和精度
1范围
float和double的范围是由指数的位数来决定的。
float的指数位8位,⽽double的指数位11位,分布如下:
float:
11bbiitt((符符号号位位))88bbiittss((指指数数位位))2233bbiittss((尾尾数数位位))
double:
11bbiitt((符符号号位位))1111bbiittss((指指数数位位))5522bbiittss((尾尾数数位位))
在数学中,特别是在计算机相关的数字(浮点数)问题的表述中,⼀个基本表达法:
valueoffloating-point=significandxbase^exponent,withsign
译为中⽂表达即为:
(浮点)数值=尾数×底数^指数,(附加正负号)
于是,float的指数范围为-127~128,⽽double的指数范围为-1023~1024,并且指数位是按补码的形式来划分的。其中负指数决定了
浮点数所能表达的绝对值最⼩的数;⽽正指数决定了浮点数所能表达的绝对值最⼤的数,也即决定了浮点数的取值范围。
float的范围为-2^128~+2^128,也即-3.40E+38~+3.40E+38;double的范围为-2^1024~+2^1024,也即-1.79E+308~
+1.79E+308。
2精度
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是⼀个隐含着的“1”,由于它
是不变的,故不能对精度造成影响。
float:2^23=8388608,⼀共七位,这意味着最多能7位效数字,但绝对能保证的为6位,也即float的精度为6~7位效数字;
double:2^52=4503599627370496,⼀共16位,同理,double的精度为15~16位。
单精度类型(float)和双精度类型(double)存储
在C语⾔中,对于浮点类型的数据采⽤单精度类型(float)和双精度类型(double)来存储,float数据占⽤32bit,double数据占⽤64bit,我
们在声明⼀个变量floatf=2.25f的时候,是如何分配内存的呢?如果胡乱分配,那世界岂不是乱套了么,其实不论是float还是double在存
储⽅式上都是遵从IEEE的规范的,float遵从的是IEEER32.24,⽽double遵从的是R64.53。
R32.24和R64.53的存储⽅式都是⽤科学计数法来存储数据的,科学计数法是将所的数字转换成(±)a.b*10^c的形式,其中a的范围是1
到9共9个整数,b是⼩数点后的所数字,c是10的指数。⽽计算机中存储的都是⼆进制数据,所以存储的数字都要先转化成(±)a.b*2^c
,由于⼆进制中最⼤的数字就是1,所以表⽰法可以写成(±)1.b*2^c的形式,要想存储⼩数就只需要存储(±),b和c就可以了。
float的存储正是将4字节32位划分为了3部分来分别存储正负号,⼩数部分和指数部分的:
1.Sign(1位):⽤来表⽰浮点数是正数还是负数,0表⽰正数,1表⽰负数。
2.Exponent(8位):指数部分。即上⽂提到数字c,但是这⾥不是直接存储c,为了同时表⽰正负指数以
您可能关注的文档
最近下载
- 体育教学家长会课件.pptx VIP
- 新人教部编版语文三年级下册《劝告》精品教学课件.pptx VIP
- BS EN 12390-4-2019 Testing hardened concrete Part 4:Compressive strength – Specification for testing machines 硬化混凝土试验第4部分: 抗压强度试验机规范.pdf
- 体育教学家长会课件模板.pptx VIP
- 家长会体育课件.pptx VIP
- 混凝土梁抗弯承载力计算.xls VIP
- 2024《中小企业招聘管理的问题与完善对策研究—以昆山S汽车零部件公司为例》11000字.docx VIP
- 肯德基企业内部管理模式.pptx VIP
- 2024火电厂尿素催化水解制氨系统运行维护规程.pdf VIP
- J599系列Ⅱ使用说明书.pdf VIP
原创力文档


文档评论(0)