culiuxia 发表于 2010-5-24 14:59

请看下两个相似代码,为何一个可行,另一个不行

clear;
for i=10:10:90,x(i/10)=i; end
x

for i=0.1:0.1:0.9, x1(i*10)=i; end
x1

如上两个相似的代码,都是为了循环出现一个矩阵
为何i/10 可以运行,i*10的不能运行

[ 本帖最后由 ChaChing 于 2010-5-24 19:59 编辑 ]

rocwoods 发表于 2010-5-24 15:16

这涉及到浮点小数在计算机中表示以及计算问题(在浮点计算体制下,有些小数是不能用有限二进制位数精确表示的),如果是整数运算结果还是整数没有这样的情况:
楼主试试下面代码:

>> isequal((0.1+0.2)*10,3)
ans =
   0
第二种情况最好加个round:
for i=0.1:0.1:0.9
    x1(round(i*10))=i;
end
x1


[ 本帖最后由 rocwoods 于 2010-5-24 15:17 编辑 ]

culiuxia 发表于 2010-5-24 19:30

谢谢LS,发现了,确实是数据类型的问题
页: [1]
查看完整版本: 请看下两个相似代码,为何一个可行,另一个不行