操作系统:Win 7 64 位。Matlab:2014a,2015a
当我按如下方式创建向量时:
a = 0.2:0.2:1
我得到:
a = 0.2000 0.4000 0.6000 0.8000 1.0000
这是预期的。现在,当我想查看向量中是否存在 0.6 时,我输入:
a == 0.6
我得到:0 0 0 0 0
find(a == 0.6)
还返回一个Empty matrix: 1-by-0
这些都是意料之外的。它能够找到所有其他值,但是对于 0.6 存在问题。我认为虽然创建了 0.6,但它实际上是 0.600000000000000001 或类似的东西,这是一个问题。你可以看到这是这样的,a > 0.6
并且会得到 0 0 1 1 1
。
1-首先为什么会这样?
2-Second 我们是否能够在 Matlab 中看到一个数字的整个值,如果可以,它的功能或设置是什么?
我使用 创建了相同的向量linspace
,但这也没有帮助。我通过键入 : 找到了解决方案 a = roundn(a, -10)
。但是,我认为一开始就不需要这样的解决方案。
3-有没有更好的方法来命令 Matlab 产生精确值?
感谢大家的帮助。