标题:实数在内存中的存储误差是怎样引起的呢???
只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-315466-1-1.html




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

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