Вопрос к мастерам MQL4. Опять про Double Compare. - страница 11

 

Забанили не втихую. А вполне открыто, после двух предупреждений. Здесь - приличный форум для серьёзных людей. Грош цена Вашим необъятным знаниям, если Вы не можете донести их на родном (надеюсь, не олбанском) языке.

 

Прочитал всё!

Много раз!

Разные ветки.

Но резюме так и не увидел. Хотелось бы конкретики и ясности в данном вопросе.

Господа профи, пожалуйста, если не в лом, сделайте окончательный вывод (примерно так) -

всем, юзерам, лузерам, чайникам, самоварам - при сравнении чисел типа double используем следующее:

stdlib, bool CompareDoubles(double number1,double number2);

или

if (NormalizeDouble((a-b)>0,Digits)) {...}

или

int ComparePrice(double a, double b)
{
a -= b;
b = Point / 2.;
if (a > b) return (1);
if (a < -b) return (-1);
return (0);
}

или

double a;
double b;
int factor = MathRound( MathPow(10, digits) ); // digits - это точность с которой будем сравнивать
Если сравниваем цены, то это предопределенная переменная Digits
...

if (MathRound( (а - b) * factor ) != 0)
{
... // a != b
}

if (MathRound( (а - b) * factor ) == 0)
{
... // a == b
}

if (MathRound( (а - b) * factor ) > 0)
{
... // a > b
}

if (MathRound( (а - b) * factor ) < 0)
{
... // a < b
}

или

При сравнении чисел типа double при точности до 4-5 знака ничего лишнего придумывать больше не надо.

С уважением, Александр.