Все ответы верны. Я просто хотел подробнее остановиться на замечании gnovice о тестировании с плавающей запятой.
При сравнении чисел с плавающей запятой на равенство необходимо использовать значение допуска. Обычно используются два типа сравнения допусков: абсолютный допуск и относительный допуск. (источник)
Сравнение абсолютных допусков a
и b
выглядит так:
|a-b| < tol
Сравнение относительной толерантности выглядит так:
|a-b| < tol*max(|a|,|b|) + tol_floor
Вы можете реализовать две вышеуказанные функции как анонимные:
%# absolute tolerance equality
isequalAbs = @(x,y,tol) ( abs(x-y) <= tol );
%# relative tolerance equality
isequalRel = @(x,y,tol) ( abs(x-y) <= ( tol*max(abs(x),abs(y)) + eps) );
Затем вы можете использовать их как:
%# let x and y be scalars/vectors/matrices of same size
x == y
isequalAbs(x, y, 1e-6)
isequalRel(x, y, 1e-6)
person
Amro
schedule
04.02.2010