2013-11-10 2 views
0

Я пытаюсь написать код, который вычисляет, является ли a меньше, чем b с n-битным допуском, где a и b являются переменными с двойной точностью.«Меньше» сравнения с допуском

Например, 4.000000001 < 4.00000001 будет TRUE, но 4.0000000001 < 4.000000001 будет FALSE. 3.99999999 < 4.00000000 также будет FALSE. Также обратите внимание, что a и b могут быть отрицательными.

+0

Вы хотите сравнить с определенным допуском или действительно первыми цифрами? 4.000000000 <3.9999999999 не будет правдой, но это очень общий вывод. – Daniel

+0

Прошу прощения, я сформулировал это неправильно. Я хотел сказать с допуском n-бит –

+0

Возможно, вы можете посмотреть ['eps'] (http://www.mathworks.com/help/matlab/ref/eps.html). Вы можете получить различные допуски, подходящие для разных типов данных (например, 'eps ('single')') – chappjc

ответ

3

Это должно работать:

ndigits = 7; 
round(a*10^ndigits) < round(b*10^ndigits) 
+2

+1 Я неправильно понял вопрос –

1

Если вы действительно искать < отношения, я бы

x < y + tolerance 

, где толерантность является значение, которое указывает на то, какие значения вышеy считается как ниже его.

Смежные вопросы