Matlab增量bug?

时间:2013-08-23 14:30:36

标签: matlab integer

我不知道发生了什么,但当我在我的代码中使用i = 0.1:0.1:7时,我得到整数1和2,然后跳过3但得到4,5,6和7没有问题。

x=zeros((t_f/h)+1,1);
x(1,1)=0; 

table=zeros(t_f,1); 

for i=0.1:0.1:7;  
      x(round(i/h)+1,1)=i;
      if ~mod(i,1)
          table(i,1)=i;  
      end
end

然后测试我返回了这些

table
a=[x(1) x(11) x(21) x(41) x(51) x(61) x(71)]
a=[x(1) x(11) x(21) x(31) x(41) x(51) x(61) x(71)]

它没有找到3作为整数,因为我从不是3,它是3.000 ......但是1,2,4,5,6和7是整数。

1 个答案:

答案 0 :(得分:2)

它是浮点数表示问题。当数字以这种方式构建时,您期望正好为3的数字会少量(4.440892e-16)。这是预期的行为,而不是错误,请参阅:http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html