MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [讨论]matlab取整不整的一个问题 (https://www.labfans.com/bbs/showthread.php?t=2179)

austinlu 2008-04-10 09:25

[讨论]matlab取整不整的一个问题
 
在下面的程序中,第八行通过round或fix语句进行取整,但是发现在计算后,所得结果却并没有取整,减一个同大小的数字后也不是0,而是一个极小的数字.

clear %1
clc
p(1,:)=[6.84,125000]; %3
p(2,:)=[4.56,125000];
L=11.4; %5
l=0.57;
for j=1:length(p);
qoele=round(p(j,1)/l)+1 %8;
b=qoele*l-p(j,1)
a=l-(qoele*l-p(j,1))
end

运行结果为:
qoele =
13
b =
0.569999999999999
a =
5.55111512312578e-016
qoele =
9
b =
0.57
a =
-3.33066907387547e-016

其实这个程序用手算结果进行比较很明显的可以看出不是显示倍数的问题,我也用format等显示格式的函数进行了设置,但是还是找不到问题的所在.最后只能怀疑是round函数的问题.
我也用过fix函数取整,但是同样的问题还是存在.

dnping 2008-04-10 18:30

我这里提几个问题:
1. 你这个程序的目的是什么?我看不懂……

2. 程序中的L有什么用?

3. for循环中绕来绕去,变量a,b有什么意义?

4. 程序中所用的p矩阵中的值仅仅是第一列的数值,p矩阵中第二列的数值作什么用?

5. 对于第八行取整,原本你p矩阵的第一列中的都是小数,但是得到的qoele的值都是整数,怎么说没有取整?

austinlu 2008-04-20 19:55

1、程序是我的一个有限元程序中的一部分,具体干什么用的与这个问题没有关系
2、程序的意思大概是在长度为L的线上,作用有两个集中力P(第一列为位置,第二列为大小)。我将其按每段长为l 划分单元,要确定每个力所在的单元号,a和b分别为其与左右两个节点间的距离。
3、经过取整后结果是整数没错,但是他后面还带了一个非常的小数,所以说他的取整并没有完全达到取整结果。
肯请各位多帮助,这到底是怎么回事。运行一下应该能看到结果


所有时间均为北京时间。现在的时间是 12:24

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.