我想比较两个双值。我知道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
答案 0 :(得分:2)
有两种方法:
将if MinimumValue<=theta
替换为if MinimumValue == theta
。对于您的问题,这是更容易但可能更差的方法。
有可能MinimumValue
与theta
的差异很小。如果您手动进行一些计算以确定theta = 3.5261e+04
,并且相信还有更多的小数位,则应使用format long
来确定theta
到15个有效数字的实际值。之后,您可以使用if abs(MinimumValue - theta) <= eps
(编辑:正如帕特里克在下面的评论中所述,您应该与某些用户定义的容差或eps
而不是realmin('double'
进行比较)。