hammerlxf 发表于 2008-11-26 22:53

【求助】关于双精度数来表达数

–下边3个式子的计算结果是相同的,但是由于这些数字都是使用二进制存储的,在使用双精度数来表达这些数时,往往就会出现一些误差

•>> a=0.33-0.5+0.17
•a =

2.7756e-017
•>> b=0.33+0.17-0.5
•b =

0
•>> c=0.17-0.5+0.33
•c =

5.5511e-017
•>>




谁能具体解释一下,谢谢,小弟初学
Q35750881

zhoulon 发表于 2008-11-27 10:14

你到底要干什么,没有看清楚。就你所说的而言,只是matlab的显示问题,你可以改变显示格式呀,至于matlab内核计算都是采用双精度数来进行的,跟你说的显示没有关系的。

sigma665 发表于 2008-11-27 10:56

vpa()

sogooda 发表于 2008-11-27 15:40

回复 楼主 hammerlxf 的帖子

浮点数的计算总是会有些误差的,双精度的精度也就是在1e-16,再小的数基本上就是虚假的了。

ChaChing 发表于 2008-11-27 15:47

不是matlab的显示问题, 而是任何数值分析都会遇到的问题, 属於rounding(or truncation) error
论坛上类似帖很多如
http://forum.vibunion.com/forum/thread-50477-1-1.html (13F是正解)
http://forum.vibunion.com/forum/thread-46198-1-1.html
http://forum.vibunion.com/forum/viewthread.php?tid=70085

"...双精度的精度也就是在1e-16,再小的数基本上就是虚假的了"
对楼上的说明, 补充一下
是相对精度eps(约2.22e-16), 而最小的数为realmin(约2.225e-308)

[ 本帖最后由 ChaChing 于 2008-11-27 15:56 编辑 ]
页: [1]
查看完整版本: 【求助】关于双精度数来表达数