Funkcje matematyczne:   MathMod()

Funkcja double MathMod() zwraca resztę z dzielenia dwóch liczb. Więcej informacji można znaleźć w specyfikacji MQL4. Funkcja oblicza resztę z dzielenia zgodnie z następującą formułą:   value_1 = value_2 * Y + R , gdzie

 value_1 - pierwszy argument funkcji,
 value_2 - drugi argument funkcji,
 Y - liczba calkowita,
 R - wynik obliczenia jako reszta z dzielenia, ma taki sam znak co i value_1. Wartość bezwzględna R jest mniejsza niż wartość bezwzględna value_2.

Przykład 1

#property strict
void OnStart()
  {
//--- znaleźć resztę z dzielenia dwóch liczb zmiennoprzecinkowych
   double value_1 = 78.0;
   double value_2 = 33.0;
   double result_1 = MathMod(value_1,value_2);
   Print("1) result_1 = ",result_1);

   Print("2) MathMod(-78.0,33.0) = ",MathMod(-78.0,33.0));

//--- znaleźć resztę z dzielenia dwóch liczb całkowitych
   int value_3 = -78;
   int value_4 = 26;
   double result_2 = MathMod(value_3,value_4);
   Print("3) result_2 = ",result_2);

   Print("4) MathMod(0,12345) = ",MathMod(0,12345));
   Print("5) MathMod(12345,0) = ",MathMod(12345,0));
  }

Przykład 1 obliczenia MathMod(78.0,33.0):   78.0 = 33.0 * 2 + 12. Ponieważ funkcja zwraca liczbę typu double, wynik = 12.0.

Przykład 2 obliczenia MathMod(-78.0,33.0):   -78.0 = 33.0 * (-2) + (-12). Ponieważ funkcja zwraca liczbę typu double, wynik = -12.0.

Przykład 3 obliczenia MathMod(-78,26):   -78 = 26 * (-3) + (-0). Ponieważ funkcja zwraca liczbę typu double, wynik = -0.0.

Przykład 4 obliczenia MathMod(0,12345):   0 = 12345 * 0 + 0. Ponieważ funkcja zwraca liczbę typu double, wynik = 0.0.

Przykład 5 obliczenia MathMod(12345,0):   12345 = 0 * Y + 0. Ponieważ wartość bezwzględna R musi być mniejsza niż wartość bezwzględna value_2 (w tym przypadku 0), funkcja zwróci wartość niezdefiniowaną (rys. 1, przykład 5).

Rys. 1. Przykłady stosowania funkcji MathMod().