数学演算子

MQL4基礎

数学演算子

数学演算子

数学演算子は基本的な計算に使われる四則演算(足し算、引き算、掛け算、割り算)のことです。

数学演算子説明
+変数や数値の加算(足し算)。
変数や数値の減算(引き算)。
*変数や数値の乗算(掛け算)。
/変数や数値の除算(割り算)。
%変数や数値の除算の余り。
++変数に 1を加算。
– –変数に 1を減算。
※乗数や平方根、対数計算などは数学関数にあります。

使用例

数学演算子計算例 1

四則演算の計算例と計算の優先順位の例です。
計算の優先順位は、① () の中 → ②掛け算と割り算 → ③足し算と引き算
の順番になります。

コード

// 数学演算子計算例 1
#property strict
int a, b, c, d, e, f;
void OnInit() {

a = 1 + 2;               // 3
b = 3 - 4;               // -1
c = 5 * 6;               // 30
d = c / a;               // 10
e = d % a;               // 1
f = 1 + 2 * 3 / (4 - 5); // -5

Print("足し算の結果:", a);
Print("引き算の結果:", b);
Print("掛け算の結果:", c);
Print("割り算の結果:", d);
Print("割り算の余り:", e);
Print("計算優先確認:", f);
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

++と--の計算 (書き方注意!)

数学演算子++と--は変数に 1を足す、1を引く処理をしますが、書き方に注意してください。
変数 i = 1 とした場合、
i++は i = i + 1、i--は i = i - 1 と同じ意味を持ちます。
i++ と i-- は書き方として単体で「i++;」のように書いてください。「Y = i++;」のような書き方はダメです。このように書いてもコンパイルエラーが出ず、計算間違いの原因になるので注意してください。

コード

// 数学演算子計算例 2
#property strict
int a=1, b=1, c=3, d=3;
void OnInit() {

a++;   // 良い書き方
b=b++; // 悪い書き方

c--;   // 良い書き方
d=d--; // 悪い書き方

Print("〇 a++:", a);
Print("× b=b++:", b);
Print("〇 c--:", c);
Print("× d=d--:", d);
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

計算時のデータ型を合わせよう!

必要な正確さを持って計算を行なわせるためにはデータ型を合わせなければなりません。

次のコードで①②のように整数型と実数型が混ざるような計算は正確に計算ができない場合があります。その場合は③のように実数型のみで計算をさせるか、④のようにデータ型をキャストすることで正確な計算ができます。

また、⑤⑥のように数字で計算する場合は小数点が無いと整数型として扱われるため正確な計算ができない場合があります。その場合は⑦のように整数型部分に小数点を入れ実数型にすることで正確な計算ができるようになります。

コード

// 数学演算子計算例 3
#property strict
int a=1, b=2;
double c=1, d=2;
void OnInit() {

int A = a / b;                    // ①整数のみでの計算 ✕
double B = a / b;                 // ②実数と整数の計算 ✕
double C = c / d;                 // ③実数のみでの計算 〇
double D = (double)a / (double)b; // ④int型をdouble型にキャストして対応 〇

int E = 3 / 4;                    // ⑤整数のみでの計算 ✕
double F = 3 / 4;                 // ⑥実数と整数の計算 ✕
double G = 3.0 / 4.0;             // ⑦実数のみでの計算 〇

Print("①× int A:1 ÷ 2 = ", A);
Print("②× double B:1 ÷ 2 = ", B);
Print("③〇 double C:1 ÷ 2 = ", C);
Print("④〇 double D:1 ÷ 2 = ", D);

Print("⑤× int E:3 ÷ 4 = ", E);
Print("⑥× double F:3 ÷ 4 = ", F);
Print("⑦〇 double G:3 ÷ 4 = ", G);
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

タイトルとURLをコピーしました