在c++中单精度float类型与双精度double类型的问题

有句话不太明白:【"单精度用float表示,在计算机中使用4位字节(32位bit)来表示,具有7位有效数字"】既然是用4位字节表示float,那么不是应该是4位有效数吗,... 有句话不太明白:
【"单精度用float表示,在计算机中使用4位字节(32位bit)来表示,具有7位有效数字"】
既然是用4位字节表示float,那么不是应该是4位有效数吗,一个数字不是占用一个字节吗 ?
1.124545 这个数占几个字节呢?
1124545又占多少字节?
展开
 我来答
zyh1141298056
2012-04-25 · TA获得超过1308个赞
知道小有建树答主
回答量:500
采纳率:100%
帮助的人:589万
展开全部
float占4个字节(32个bit位),这句话的意思是一个单精度的浮点数在内存当中占用了32个bit位,按照浮点数的表示标准,最高位表示符号,这32位一部分用来表示阶码,一部分用来表示小数部分。按照这个表示方法转化成10进制之后,它能表示的最高精度是7位有效数字。建议楼主先看看这个
http://wenku.baidu.com/view/4fa68320aaea998fcc220e79.html
对于你的补充问题,如果你用float类型来存这个数,那它就占4个字节,如果你用double类型来存这个数,它就占8个字节。
mtbfan
推荐于2017-09-21 · TA获得超过605个赞
知道小有建树答主
回答量:388
采纳率:0%
帮助的人:363万
展开全部
float类型存储的时候1个bit是符号位,8个bit是指数位,剩下的23个bit是有效数字位,2的23次方你算一下是多少?
我看过一老外写的书,说是现在内存很大很便宜啦,尽量用double,不用节省存储空间,大多数情况下用double比用float速度快
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Laplas
2012-04-25 · TA获得超过1万个赞
知道大有可为答主
回答量:2680
采纳率:50%
帮助的人:2406万
展开全部
float n1=1.124545
float n2=1124545
float n3=0

他们在内存里都是4Byte 32位。
只不过
float n1=1.124545123456767;
这样写是没有用的。还是 n1=1.124545
精度不够了。
文章这里的7位有效数字指的是十进制的人类世界数字。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6fe74e2
2012-04-25 · TA获得超过6592个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:228万
展开全部
4个字节(byte),一个字节是8位(bit),计算机中数据都是以二进制的形式存在,比如11100011就是8位(bit),占1个字节(byte).float和double类型的数据,存储方式跟int是不一样的。比如
float a=3.14159;a在内存中实际上表示为0.314159乘以10的1次方,而分配给a的存储单元就分为两部分,一部分存0.314159,一部分存指数1,而且也都是转化为2进制来存,所以说,有效数字,不是你想的那样。明白了吗? 所需要的存储空间,由你声明的数据的数据类型来决定。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式