比较两个数字的大小

为比较两个数字的大小,MQL5 提供了函数 MathMax 和 MathMin。它们的短别名分别是 fmax 和 fmin。

numeric MathMax(numeric value1, numeric value2) ≡ numeric fmax(numeric value1, numeric value2)

numeric MathMin(numeric value1, numeric value2) ≡ numeric fmin(numeric value1, numeric value2)

该等函数返回传递的两个值的大值和小值。该等函数为所有内置类型重载。

如果为函数传递了不同类型的参数,则“较低”类型的参数自动转换为“较高”类型,例如,在一对类型 int 和 double 中,int 将被转换为 double。有关显式类型强制转换的更多信息,参见 算术类型转换章节。返回类型对应于“最高”类型。

有 string 类型的参数时,该参数将是“高级”类型,即全部缩减为字符串。字符串将从词典学角度比较,如同在 StringCompare 函数中一样。

MathMaxMin.mq5 脚本演示了这些函数的实际效果。

void OnStart()
{
   int i = 10, j = 11;
   double x = 5.5, y = -5.5;
   string s = "abc";
   
   // numbers   
   PRT(MathMax(i, j)); // 11
   PRT(MathMax(i, x)); // 10
   PRT(MathMax(x, y)); // 5.5
   PRT(MathMax(i, s)); // abc
   
   // type conversions
   PRT(typename(MathMax(i, j))); // int, as is
   PRT(typename(MathMax(i, x))); // double
   PRT(typename(MathMax(i, s))); // string
}