| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2732 人关注过本帖
标题:实数在内存中的存储误差是怎样引起的呢???
只看楼主 加入收藏
王璐
Rank: 2
等 级:论坛游民
帖 子:126
专家分:54
注 册:2010-7-26
结帖率:93.1%
收藏
已结贴  问题点数:10 回复次数:11 
实数在内存中的存储误差是怎样引起的呢???
实数在内存中的存储误差是怎样引起的呢???
比如说输出123.456,却输出的是123.456001,以%f格式输出。
搜索更多相关主题的帖子: 内存 实数 误差 
2010-08-11 23:58
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:1 
这个应该关系到硬件的处理体系了吧
我也不明白
以前到是看过类似偏差原因的解释
但是大概是糊里糊涂的知道梗概
现在又忘记了
2010-08-12 00:29
Rexfield
Rank: 6Rank: 6
来 自:幻想乡
等 级:侠之大者
威 望:1
帖 子:240
专家分:484
注 册:2010-7-28
收藏
得分:1 
浮点失真问题,这个是一直令人头疼的东西。
LZ可以参考有关浮点移码的知识和IEEE的相关定义。

If you're not failing every now and again, it's a sign you're not doing anything very innovative.
2010-08-12 00:46
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:1 
这其实是数制转换问题!二进制数<-->浮点数,自己转换一下看看就知道了!

★★★★★为人民服务★★★★★
2010-08-12 07:14
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:1 
存储在计算机里都是二进制,不可能所有的数都正好可以完全换成二进制数

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2010-08-12 20:20
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:1 
1/3

我就是真命天子,顺我者生,逆我者死!
2010-08-12 22:13
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1685
专家分:4252
注 册:2007-12-27
收藏
得分:1 
以下是引用王璐在2010-8-11 23:58:45的发言:

实数在内存中的存储误差是怎样引起的呢???
比如说输出123.456,却输出的是123.456001,以%f格式输出。
具体到这个问题,是因为float类型只能保证6-7位有效数字,而%f格式符强制输出6位小数,
就你的例子而言,由于3个整数位的存在,6位小数实际等同于9个有效数字了,
没有保存那么多,还得输出那么多,于是只好瞎编了
----关键是这句话:这个例子演示的不是计算误差,而是C语言被迫瞎编部分输出结果。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-08-13 10:48
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1685
专家分:4252
注 册:2007-12-27
收藏
得分:0 
而对于浮点误差,其来源很简单:
多数有限长度的十进制浮点小数在转换成二进制的时候会变成无限长度,而实际上变量只能表示有限的位数,后面舍掉的就是误差。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-08-13 10:53
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:1 
%f是浮点数输出它这个有很多位数 你要在 %mf m就是规定字符的长度就可以了

清风拂暮(木)
2010-08-13 10:57
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:1 
研究下IEEE-754自然就全明白了。。。

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2010-08-13 11:01
快速回复:实数在内存中的存储误差是怎样引起的呢???
数据加载中...
 
   



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

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