Особенности языка mql5, тонкости и приёмы работы - страница 240

 

самый производительный и короткий способ определить день недели по времени:

uchar WhatWeekDay(datetime t) {
   return uchar(t/(24*60*60)+3 )%7+1;
}

возвращает значение от 1 до 7

1 - понедельник

...

7 - воскресенье

 
Nikolai Semko #:

7 - воскресенье

Полезнее, когда воскресенье - ноль.

 
fxsaber #:

Полезнее, когда воскресенье - ноль.

может быть, тогда:

uchar WhatWeekDay(datetime t) {
   return uchar(t/(24*60*60)+4 )%7;
}
 
Математически одинаковое выражение (выделено) может давать разный результат на практике.
template <typename T>
T MathMin1( const T Num1, const T Num2 )
{
  return(Num1 < Num2 ? Num1 : Num2);    
}

template <typename T>
T MathMin2( const T Num1, const T Num2 )
{
  return(Num1 <= Num2 ? Num1 : Num2);    
}

void OnStart()
{
  Print(MathMin1(0.0, -0.0)); // -0.0
  Print(MathMin2(0.0, -0.0)); // 0.0
}
 
fxsaber # : Mathematically the same expression (highlighted) can give different results in practice.

As long as the two amounts are equal, any one of them is a valid minimum. Consider MathMin(1, 1), it does not differ if the the function returns the first (1) or second (1).

So, returning 0.0 is not different from -0.0.

Edit: by the way, the two highlighted expressions are NOT identical.
 
fxsaber #:
Математически одинаковое выражение (выделено) может давать разный результат на практике.

Так ведь разные выражения, вот и результат разный. Что тут не так?

В первом случае: 0 < 0? Нет. Возвращается второй аргумент.

Во втором случае: 0 <= 0? Да. Возвращается первый аргумент.

 
Ihor Herasko #:

Так ведь разные выражения

fxsaber #:
Математически одинаковое выражение
 
fxsaber #:

Знаки < и <= вроде бы разные...

 
Ihor Herasko #:

Знаки < и <= вроде бы разные...

Вы отказываетесь понимать.

 
fxsaber #:

Вы отказываетесь понимать.

тоже не понимаю, почему выделенные выражения математически одинаковы.

Причина обращения: