| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4983 人关注过本帖
标题:C语言的浮点数问题~
只看楼主 加入收藏
老鼠头头
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-12-11
收藏
得分:0 
顶~~~
2008-01-26 22:58
svjh
Rank: 1
等 级:等待验证会员
帖 子:47
专家分:0
注 册:2007-11-27
收藏
得分:0 
谁能给个明确一点的回答啊~~~555555555
找了很久都没有这方面的答案......
2008-01-31 21:06
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
答案是很显然的,请你告诉我浮点数的存储结构是怎样的?
2008-01-31 21:08
闪闪4521
Rank: 1
等 级:新手上路
帖 子:196
专家分:0
注 册:2007-11-30
收藏
得分:0 
到,忘了,好像是很久以前学过的、
只记得存储有误差,到底是怎么回事不记得了
谁上来说说
2008-02-03 20:31
晨曦的朝阳
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-1-24
收藏
得分:0 
float型数据用float类型输出时只有前面的七位数字有效,其它的都是不确定的,我觉得是这样的。
2008-02-03 23:55
lingzi1049
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-5-3
收藏
得分:0 
    按楼主所给的值,单精度浮点数只能精确到小数点后5位,小数点第6位并非随机给出,而是超出了表示范围发生下溢。不发生溢出,单精度浮点数是可以6位数值都是准确的。
    原因:32位单精度浮点数用4字节存储,1位符号+8位指数偏差E+23位数值部分。指数偏差E用以确定小数点位置,其位数决定数的表示范围;数值部分位数决定表示数的精确程度。对于单精度浮点数123.1122334455667788,用二进制表示时,整数部分123=1111011,按单精度数据存储格式因去掉最高位的“1”,故这部分(111011)占用了6位存储空间,还剩23-6=17位存储空间用来存储小数部分数据,能表示的精确度为2^(-17)=7.6*10^(-6)。可以看到,小于7.6*10^(-6)的数是不能正确表示的,即小数点后第6位(十进制)数会发生下溢第5位正常。若把123.1122334455667788的整数部分改小点(减小整数部分占用的空间),例如改成3.1122334455667788第6位便正确显示。可以试下改成23.1122334455667788,第6位不会正确显示,按上述方法计算便知下溢临界值为2^(-19)=1.9*10^(-6)。
2016-05-03 12:33
快速回复:C语言的浮点数问题~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022133 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved