比较两个数字的大小

为比较两个数字的大小,MQL5 提供了函数 MathMaxMathMin。它们的短别名分别是 fmaxfmin

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

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

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

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

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

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

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