如何在matlab中比较两个double值?

时间:2014-03-27 06:59:14

标签: matlab double

我想比较两个双值。我知道MinimumValue的值,即3.5261e+04。这是MinimumValue我从数组e获得的。我的代码必须打印第一个语句'recognized face',因为两个值都相同。但是我的代码显示了第二个语句'unrecognized face'

我的代码中有什么错误?

MinimumValue = min(e)

theta = 3.5261e+04;

if (MinimumValue <= theta)
    fprintf('recognized face\n');
else
    fprintf('unrecognized face\n');
end

1 个答案:

答案 0 :(得分:2)

有两种方法:

  1. if MinimumValue<=theta替换为if MinimumValue == theta。对于您的问题,这是更容易但可能更差的方法。

  2. 有可能MinimumValuetheta的差异很小。如果您手动进行一些计算以确定theta = 3.5261e+04,并且相信还有更多的小数位,则应使用format long来确定theta到15个有效数字的实际值。之后,您可以使用if abs(MinimumValue - theta) <= eps(编辑:正如帕特里克在下面的评论中所述,您应该与某些用户定义的容差或eps而不是realmin('double'进行比较)。