austinlu
2008-04-10, 09:25
在下面的程序中,第八行通过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函数取整,但是同样的问题还是存在.
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函数取整,但是同样的问题还是存在.