【求助】关于双精度数来表达数
–下边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 你到底要干什么,没有看清楚。就你所说的而言,只是matlab的显示问题,你可以改变显示格式呀,至于matlab内核计算都是采用双精度数来进行的,跟你说的显示没有关系的。 vpa()
回复 楼主 hammerlxf 的帖子
浮点数的计算总是会有些误差的,双精度的精度也就是在1e-16,再小的数基本上就是虚假的了。 不是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]