Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2008-05-27
年龄: 43
帖子: 21
声望力: 17 ![]() |
![]()
各位,
我在编程的过程中发现一个这个问题,如下 >> x=100000000000000000000000000000000000000000000000000001 x = 1.0000e+053 >> y=100000000000000000000000000000000000000000000000000000 y = 1.0000e+053 >> x-y ans = 0 明明是两个不一样的数相减居然等于0! 不知道是不是matlap的一个小错误,还是我不明白 有办法解决吗? |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2008-11-22
年龄: 40
帖子: 10
声望力: 17 ![]() |
![]()
这情况在任何数值软件里边都一样(对于机器也是一样),如果尾数1那么重要的话,建议改成符号运算.这是很基本的数值计算的内容.楼主有空可以看看,估计对你会有很大的帮助.
|
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-05-27
年龄: 43
帖子: 21
声望力: 17 ![]() |
![]() |
![]() |
![]() |
![]() |
#4 |
初级会员
注册日期: 2008-11-22
年龄: 40
帖子: 10
声望力: 17 ![]() |
![]()
任何计算机表示数都是按二进制进行的,它有一定的位数限制,所以并不是所有的数都可以由计算机表示出来.而具体的,在matlab里,默认数值是double型的.所以,你那个末尾的1matlab是自动舍去的.具体的也不是那么容易说清楚,需要计算机数值表示方面的知识.你可以参阅任何一本数值分析的书,google''数值分析''就能找到很多
|
![]() |
![]() |
![]() |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
[分享][讨论]C++ 快速FFT(rlft3)用于2D处理 | 149700017 | MATLAB论坛 | 0 | 2009-02-25 22:47 |
[求助]SimMechanics的介绍资料 | yingjiong86 | MATLAB论坛 | 0 | 2008-12-07 16:22 |
[求助]Maple Toolbox for MATLAB - Version 12.01 (for users of version 12.00)谁有啊?谢谢! | jamesgump | MATLAB论坛 | 0 | 2008-11-27 21:11 |
[求助]SIMULINK中与到小问题了,来看看吧! | rong3168 | MATLAB论坛 | 1 | 2008-11-21 08:21 |
【文章】仿真动画软件设计作品--电路开闭 | yesman | MATLAB论坛 | 0 | 2007-12-11 16:21 |