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. |
#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().