PDA

查看完整版本 : [求助]发现了matlap的一个错误!


me4047
2008-11-23, 06:03
各位,
我在编程的过程中发现一个这个问题,如下


>> x=100000000000000000000000000000000000000000000000000001

x =

1.0000e+053

>> y=100000000000000000000000000000000000000000000000000000

y =

1.0000e+053

>> x-y

ans =

0
明明是两个不一样的数相减居然等于0!
不知道是不是matlap的一个小错误,还是我不明白

有办法解决吗?

zhan
2008-11-23, 09:35
这情况在任何数值软件里边都一样(对于机器也是一样),如果尾数1那么重要的话,建议改成符号运算.这是很基本的数值计算的内容.楼主有空可以看看,估计对你会有很大的帮助.

me4047
2008-11-23, 16:35
这情况在任何数值软件里边都一样(对于机器也是一样),如果尾数1那么重要的话,建议改成符号运算.这是很基本的数值计算的内容.楼主有空可以看看,估计对你会有很大的帮助.

谢谢先啊!说的我云里雾里的!

看什么对我的帮助很大啊?我还是不知道怎么解决!

求教!

zhan
2008-11-23, 20:15
任何计算机表示数都是按二进制进行的,它有一定的位数限制,所以并不是所有的数都可以由计算机表示出来.而具体的,在matlab里,默认数值是double型的.所以,你那个末尾的1matlab是自动舍去的.具体的也不是那么容易说清楚,需要计算机数值表示方面的知识.你可以参阅任何一本数值分析的书,google''数值分析''就能找到很多