float double 精确度

c语言中,float型数据的存储范围明明是1.2*10^-38-----3.5*10^38,为什么书上说它的精确度只有6--7位呢?不应该是38位吗。double也是。。... c语言中,
float 型数据的存储范围明明是 1.2 * 10 ^ -38 ----- 3.5 * 10 ^38,
为什么书上说它的精确度只有 6 -- 7位呢? 不应该是 38位吗。
double 也是。。
展开
 我来答
忘至白葬不情必0T
2009-11-23 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
精确度和范围是两回事好不好.
比如我们用a,b,c,d,e来表示五个数,如果分别表示1,2,3,4,5,那么范围是1-5,如果表示2,4,6,8,10,那么范围是2-10,虽然范围提高了近一倍,但3,5,7,9这四个数无法表示出来,所以精确度下降了.

float只有32位,所以理论上最多只能表示2^32个不同的数,而现在要让它表示范围为10^38,相当于2^127次方这么大范围的数,精度度当然很小啊.
wcwanchang
2009-11-23 · TA获得超过189个赞
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:0
展开全部
数据在内存中是按二进制存储的,float型的也是。
比如int型的4,存储为0100。二进制的0100转化十进制是0*2^3+1*2^2+0*2^1+0*2^0
所以你看的那个范围是38位,是指在内存中能存储38位二进制数。转化成十进制实际上就只有6-7位了。

一些具体数据忘记了,建议你上网查查数据的存储方式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c4249ef
2009-11-23 · TA获得超过4867个赞
知道大有可为答主
回答量:1855
采纳率:0%
帮助的人:3229万
展开全部
精确度和存储范围不是一个概念

虽然存储范围很大,不过是用科学计数法来表示的,类似1.2 * 10 ^ -38 ----- 3.5 * 10 ^38,

而精确度表示的是能精确表示的位数,一般指有效数字,如:
1.2 * 10 ^ -38
虽然数很大,但精确度只有两位有效数字

还不明白hi我
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
undergrowth
2009-11-23 · TA获得超过1513个赞
知道小有建树答主
回答量:879
采纳率:0%
帮助的人:1209万
展开全部
数据范围指的是它可以达到的最大值和最小值 表示的是它可容纳的数值
而精确度是表示这个数的一种方式
不可能说像 200000000 我们这样写是不是既容易出错又不好写
那我们写成 2e8 是不是既简单又不容易出错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鬼谷子1949
2009-11-23 · TA获得超过188个赞
知道答主
回答量:241
采纳率:0%
帮助的人:151万
展开全部
对,它只是一个范围,iso和ANSC规定了基本数据类型至少有多少位,但是没有具体化,这样做,把具体留给了实现。
你可以写代码,然后在你的机器上运行,看看你的机器配合你的编译器,然后出来的是多少位的的,你就知道了,
以后编程也就方便使用了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式