В MQL5\Include\environment.mqh есть такое сравнение даблов
//+------------------------------------------------------------------+//| Сравнивает два значения типа double. |//| RESULT |//| Возвращает истину, если значения равны и |//| ложь в противном случе. |//+------------------------------------------------------------------+bool CEnvironment::DoubleEquals(constdouble a,constdouble b)
{
//---return(fabs(a-b)<=16*DBL_EPSILON*fmax(fabs(a),fabs(b)));
//---
}
В справке дан вариант из MQL4\Libraries\stdlib.mq4
//+------------------------------------------------------------------+//| right comparison of 2 doubles |//+------------------------------------------------------------------+bool CompareDoubles(double number1,double number2)
{
if(NormalizeDouble(number1-number2,8)==0) return(true);
elsereturn(false);
}
Второй способ предполагает сравнивать нормализованную разность двух вещественных чисел с нулевым значением. Сравнивать разность нормализованных чисел с нулём бесполезно, так как в результате любой математической операции с нормализованными числами результат получается ненормализованным. Пример:
Второй способ предполагает сравнивать нормализованную разность двух вещественных чисел с нулевым значением. Сравнивать разность нормализованных чисел с нулём бесполезно, так как в результате любой математической операции с нормализованными числами результат получается ненормализованным.
Это не правда. Разность двух нормализованных double всегда будет равна нулю, если их нормализованные значения совпадают. Пример со сравнением float и double приводить не надо. Это не случай двух double.
Более того, можно взять два числа, нормализованные значения которых будут равны между собой. Но их нормализованная разность не будет равна нулю.
Ошибка при компиляции: ')' - not all control paths return a value
У вас не все ветви кода возвращают значение.Надо писать так:
int f()
{
int res = 0;
while ( true ) //или for(;;)
{
//много строк c return, continue, без break
res = 0;break или continue//много строк c return, continue, без break
res = 1;break или continue
}
return(res);
}
Или так:
int f()
{
while ( true ) //или for(;;)
{
//много строк c return, continue, без breakreturn0;
//много строк c return, continue, без breakreturn1;
}
return(значение возвращаемое по умолчанию если не выполнены предыдущее return);
}
Ошибка при дебаге (build 1383)
Может конечно это и не серьезный баг но меня постоянно от него типает
суть графический обьект типа OBJ_RECTANGLE_LABEL пропадает пара или один пиксель, вроде бы и ничего но как то это не хорошо...
пропадает слева в верху при темных цветах обьекта....
В MQL5\Include\environment.mqh есть такое сравнение даблов
В справке дан вариант из MQL4\Libraries\stdlib.mq4
В MQL5\Include\environment.mqh есть такое сравнение даблов
В справке дан вариант из MQL4\Libraries\stdlib.mq4
double Смотрим. Читаем. И видим два способа сравнения:
Пример:
Пример:
Второй способ предполагает сравнивать нормализованную разность двух вещественных чисел с нулевым значением. Сравнивать разность нормализованных чисел с нулём бесполезно, так как в результате любой математической операции с нормализованными числами результат получается ненормализованным.
Это не правда. Разность двух нормализованных double всегда будет равна нулю, если их нормализованные значения совпадают. Пример со сравнением float и double приводить не надо. Это не случай двух double.
Более того, можно взять два числа, нормализованные значения которых будут равны между собой. Но их нормализованная разность не будет равна нулю.
Ошибка при компиляции: ')' - not all control paths return a value
Ошибка при компиляции: ')' - not all control paths return a value
У вас не все ветви кода возвращают значение.Надо писать так:
Или так:
У вас не все ветви кода возвращают значение.
В приведённом им примере - все. Выход из while(true) возможен только оператором break (которых у него нет) или return.