Функции округления

MQL5 API включает несколько функций для округления чисел до ближайшего целого (в ту или иную сторону). Несмотря на операцию округления, все функции возвращают число типа double (с пустой дробной частью).

С технической точки зрения они принимают аргументы любого числового типа, но округляются только вещественные, а целые числа лишь приводятся к double.

Если требуется делать округление с точностью до конкретного знака, воспользуйтесь функцией NormalizeDouble (см. раздел Нормализация чисел double).

Примеры работы с функциями приведены в файле 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)

Функции возвращают целое значение, ближайшее сверху (для ceil) или снизу (для floor) к переданной величине value. Если 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