舍入函数

MQL5 API 包括若干函数可用于将数字(在某一个方向)舍入到最近整数。尽管有舍入运算,但所有函数都返回 double 类型的数字(小数部分为空)。

从技术角度而言,它们接受任何数值类型的自变量,但仅实数被舍入,整数只是被转换为 double

如果想要舍入至特定符号,可使用 NormalizeDouble(参见 双精度浮点数规范化章节)。

函数使用示例在 MathRound.mq5 文件中提供。

double MathRound(numeric value) ≡ double round(numeric value)

该函数将数字向上或向下舍入为最接近的整数。

   PRT((MathRound(5.5)));  // 6.0
   PRT((MathRound(-5.5))); // -6.0
   PRT((MathRound(11)));   // 11.0
   PRT((MathRound(-11)));  // -11.0

如果小数部分的值大于或等于 0.5,则尾数加一(无论数字的符号为何)。

double MathCeil(numeric value) ≡ double ceil(numeric value)

double MathFloor(numeric value) ≡ double floor(numeric value)

该等函数返回传入 value 的最接近较大整数值(对于 ceil)或最接近较低整数值(对于 floor)。如果 value 已经等于一个整数(小数部分为零),对返回该整数。

   PRT((MathCeil(5.5)));   // 6.0
   PRT((MathCeil(-5.5)));  // -5.0
   PRT((MathFloor(5.5)));  // 5.0
   PRT((MathFloor(-5.5))); // -6.0
   PRT((MathCeil(11)));    // 11.0
   PRT((MathCeil(-11)));   // -11.0
   PRT((MathFloor(11)));   // 11.0
   PRT((MathFloor(-11)));  // -11.0