| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2732 人关注过本帖
标题:实数在内存中的存储误差是怎样引起的呢???
只看楼主 加入收藏
lei351530496
Rank: 2
等 级:论坛游民
帖 子:13
专家分:19
注 册:2010-8-6
收藏
得分:1 
这是因为数据的储存结构的限制;使得这种单精度实数的有效数位一般为7位。数据在计算机中是以二进制的形式保存的,而有些十进制的小数是无法准确的化成二进制的,在单精度浮点型运算中要尽量避免过大的数和过小的数进行计算,这样会产生不小的误差;
2010-08-13 21:25
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:1 
那个 1/3 的例子其实不错。
这个可以这么理解,1/3 写成十进制写不下吧?人家是循环小数,不管你有多少位,都和 1/3 有误差。
同样道理,有的数,比如 0.1(是不是,我也没转,有兴趣的试下),虽然在十进制是有限的,但转成二进制之后正好是循环小数。而且本身存的位数又有限,即使不是循环小数也有可能写不下。没写下的四舍五入,就产生误差了。
 
具体想学 IEEE 的浮点数表示的话,相对复杂一点,而且这些知识其实在应用时没什么用。只有钻牛角尖地解释一些不能“理解”的现象时,才发挥用处。
2010-08-13 23:20
快速回复:实数在内存中的存储误差是怎样引起的呢???
数据加载中...
 
   



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

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