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 # : 数学的には同じ式(ハイライト)でも、実際には 異なる結果が 得られる。

2つの量が等しい限り、そのいずれかが有効な最小値である。MathMin(1,1)を考えてみよう。この関数が最初の(1)を返すか、2番目の(1)を返すかは変わらない。

つまり、0.0を返しても-0.0と変わらない。

編集:ところで、ハイライトされた 2つの式は同一ではない。
 
fxsaber #:
数学的には同じ式(ハイライト)でも、実際には異なる結果が 出る。

まあ、式が違うから結果も違う。何が間違っているのか?

最初の場合:0 < 0?いいえ、第2引数が返されます。

2番目の場合:0 <= 0?はい、第一引数が返されます。

 
Ihor Herasko #:

表現が違う

fxsaber#:
数学的には 同じ式
 
fxsaber #:

<と<=の記号が違うようだが......。

 
Ihor Herasko #:

<と<=の記号が違うようだが......。

理解しようとしない。

 
fxsaber #:

あなたは理解しようとしない。

ハイライトされた式が数学的に同じである理由も理解できない。

理由: