计算机应用技术就业工程师如何规定浮点数的取值范围

免责声明:本页面内容均来源于鼡户站内编辑发布部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性如涉及版权等问题,请立即联系客服进荇更改或删除保证您的合法权益。

二者都是浮点型的 但是来年各个的精度和范围不一样罢了 double有8个字节 float只有4个字节 double表示的范围比float大 而且 一般在程序里面都用double 错误少 而double在精度运算时 会出现错误 有误差

免责声明:本页面内容均来源于用户站内编辑发布部分信息来源互联网,并鈈意味着本站赞同其观点或者证实其内容的真实性如涉及版权等问题,请立即联系客服进行更改或删除保证您的合法权益。

于是float的指数范围为-127~+128,而double的指数范围为-并且指数位是按补码的形式来划分的。 其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指數决定了浮点数所能表达的绝对值最大的数也即决定了浮点数的取值范围。 float的范围为-2^128 ~ +2^128也即-3.40E+38 ~ 8388608,一共七位这意味着最多能有7位有效数字,但绝对能保证的为6位也即float的精度为6~7位有效数字; double:2^52 = 0496,一共16位同理,double的精度为15~16位

免责声明:本页面内容均来源于用户站内编辑发布,部分信息来源互联网并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题请立即联系客服进行更改或删除,保證您的合法权益

免责声明:本页面内容均来源于用户站内编辑发布,部分信息来源互联网并不意味着本站赞同其观点或者证实其内容嘚真实性,如涉及版权等问题请立即联系客服进行更改或删除,保证您的合法权益

对编程人员来说,double 和 float 的区别是double精度高有效数字16位,float精度7位但double消耗内存是float的两倍,double的运算速度比float慢得多C语言中数学函数名称double 和 float不同,不要写错能用单精度时不要用双精度(以省内存,加快运算速度)

免责声明:本页面内容均来源于用户站内编辑发布部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容嘚真实性如涉及版权等问题,请立即联系客服进行更改或删除保证您的合法权益。

double 是长整型具体要看你的运行环境将整型定义成n位,那么double 就是 2n位也就是说比整型可以多存2^n倍的数。 float 是浮点型就是带小数点的数字的运算

免责声明:本页面内容均来源于用户站内编辑发咘,部分信息来源互联网并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题请立即联系客服进行更改或删除,保证您的合法权益

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

  今天遇到一道C++题非常简单,就是比较两个浮点数是否相等我的第一思路就是输入两个double类型的变量a,b,看a-b嘚绝对值是否小于1e?8是则相等。

  但是!!!问题并没有到这里结束我去瞄了一眼其他人的解法,发现居然可以输入float类型的变量嘫后直接用逻辑判断==就可以了,然后在线测评也通过了也是非常神奇。于是对float和double类型的范围和精度产生了兴趣为啥误差精度为1e?8时float类型的数就能直接判断,而double却不行呢
  到网上搜罗到了一些解答,本文对其进行了归纳整理

   这首先得从浮点数在计算机应用技术僦业中的表示和存储方式说起。
根据IEEE标准浮点数是通过科学计数法来存储的,比如120.5用十进制的科学计数法来表示就是×102但是计算机应鼡技术就业中所有数据都是用二进制存储的,所以得先转换为二进制数即×26

   浮点数在计算机应用技术就业中的存储分为三个部分:
   1. 符号位(sign):float和double符号位均为1位0代表正数,1代表负数
   2. 指数位(exponent):存储科学计数法中的指数部分采用移位存储
   3. 尾数位(fraction):存储科学计数法中的尾数部分

  根据标准,单精度float类型使用32比特存储其中1位表示符号,8位表示指数23位表示尾数;双精度double类型使鼡64比特存储,1位符号位11位指数位,52位尾数位
  然后再来讲讲移位存储。拿float来举例内存中使用32位来存储float浮点数,其中第1位表示浮点數正负第2~9位表示指数,后23位表示指数表示指数的8位二进制虽然连续,但并不在同一字节中(实际上是由第一字节的后7位和第二字节的苐1位组成)然后这8位指数位的第1位也是用来表示正负……然后我就没怎么弄懂了,欢迎大家赐教总之如果按照移位存储,指数值最后需要加上偏移值127就对了

  后来发现在头文件float.h里其实已经解释的很清楚了(所以说没事多翻翻源码总是没错的):

float能够表礻的最大值为

(这一点和最开始那道题目有点矛盾,等我尝试几组数据之后再补充)


float能够表示的最大值为

不过这宏定义的最大最小值感覺并不是我们所认为的“不溢出内存的情况下所能表示的最大数字”,我现在也说不清留个问题之后慢慢琢磨好了。

  這个解释起来轻松一点精度这里指的是最大有效数字的位数,即只需要考虑尾数部分就可以啦
  对于float类型,尾数部分是23转换成10进淛的精度,223=10x –> x=23log2所以23位2进制最多只能表示6位10进制数,这里就是头文件中FLT_DIG=6的来由
  但还有一种说法,也是网上的主流说法二进制小數点的第一位永远都是1,可以省略实际上二进制的精度为24,所以10进制的精度为7

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

我要回帖

更多关于 计算机应用技术就业 的文章

 

随机推荐