关于matlab变量.

问题描述:

关于matlab变量.
输入如下代码
i=1.1;
i=i+0.1;
find(a==i)

i=1.2
find(a==i)
执行结果不一样.a是某向量,为什么?
1个回答 分类:综合 2014-10-01

问题解答:

我来补答
热心网友说的数值误差是没错的.我来具体解释一下.
输入:
a=[1 1.1 1.2 1.3];
i=1.1;
i=i+0.1;
find(a==i)
输出:
ans =
Empty matrix: 1-by-0
再次输入:
as=sprintf('%20.18f\n',a)
输出:
as =
1.000000000000000000
1.100000000000000100
1.200000000000000000
1.300000000000000000
可以看到向量a的第二项实际上并不是1.1,而是1.100000000000000100,所以加1之后就不等于1.2了.
所以实际应用时,在用到“==”进行判别之前,尽量不要进行变量的计算.
 
 
展开全文阅读
剩余:2000
下一页:fx的解析式