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 # : 在数学上,同样的表达式(突出显示)在实际应用中可能会得出 不同的结果

只要两个量相等,其中任何一个都是有效的最小值。例如 MathMin(1,1),如果函数返回第一个 (1) 或第二个 (1),结果是一样的。

因此,返回 0.0 与返回 -0.0并无不同。

编辑:顺便说一下,两个突出显示的 表达式并不完全相同。
 
fxsaber #:
在数学上,相同的表达式(高亮显示)在实际应用中会产生不同的结果

表达式不同,结果也就不同。这里出了什么问题?

第一种情况:0 < 0?不对,第二个参数被返回。

第二种情况:0 <= 0?是的,返回的是第一个参数。

 
Ihor Herasko #:

表达方式不同

fxsaber#:
数学 表达式相同
 
fxsaber #:

<和<=符号似乎不同.....

 
Ihor Herasko #:

<和<=符号似乎不同.....

你拒绝理解。

 
fxsaber #:

你拒绝理解。

我也不明白为什么突出显示的表达式在数学上是一样的。