MQLに限らず、コンピュータ上での数や文字はいろいろな表し方ができます。
EAやカスタムインジケーターを作る場合には利用しない表し方も多いですが、計算結果をログに出力してみたら変な文字が…型を間違えて変な値が…なんてことにならないように、どんな表し方があるか頭の片隅にでも入れておきましょう。
10進数
数の表し方でもっとも見慣れた10進数。
言わずもがな、0〜9の10種類の数字を使って数を表す方法です。
数が1増えるごとに、0、1、2…と数字が増えていき、9まで進んだら上位の桁に繰り上がり、1桁目は0にリセットされます。
例えば数字の123は各桁で分解すると次のように表すこともできます。
1×102 + 2×101 + 3×100
2進数
10進数は0〜9の10種類の数字を使って数を表すものでした。
2進数は0か1の2種類の数字を使って数を表す方法です。
0、1と数えたら、2という数字は使えないので桁を繰り上げて10。
さらに1を加えたら11。
そこに1を加えて100。
という形で桁が繰り上がる考え方は10進数と同様です。
例えば10進数の12という数は2進数で表すと1100という数字になり、各桁で分解すると次のように表すことができます。
1×23 + 1×22 + 0×21 + 0×20
2進数の「10」と10進数の「10」はまったく異なる値を示します。
このため、次のような表記で2進数表記であることを明示的に示します。
(10)2
(10)b
0b10
MQLでは2進数表記はできないんですが
8進数
8進数は、0〜7の8種類の数字で数を表します。
基本的な考え方は10進数や2進数と同じで、使える数字の最大(7)まで進んだら上位の桁に繰り上がって、再び0からカウントを始めます。
10進数と区別するために8進数の値を表記する場合は次のように表記します。
(10)8
010
8進数の「10」は、10進数では「8」を示しています。
MQL5のフォーマット書式を使って8進数の値を出力すると、先頭に0が付与される表記が使用されます。
16進数
続いて16進数。
考え方は他のN進法と同じく、16種類の文字で数を表します。
数字としては0〜9の10種類しか存在していないので、A、B、C、D、E、Fの6個のアルファベットも使って16種類の文字を表現します。
上の図のように4ビットで表される値を16進数であれば1文字で表現できます。(コンピュータでよく使われる単位である1バイト(8ビット)の場合だと2文字で表現できる)
16進数の場合も10進数と区別するために独自の表記があります。
(10)16
0x10
MQL5のフォーマット書式を使って16進数の値を出力すると、先頭に0xが付与される表記が使用されます。
指数表記
整数部、もしくは小数点以下の桁がとても長い値を表示すると、当然ですが横長に表示されてしまいとても見づらくなります。
そんな時には指数表記を利用します。
大きな値の指数表記
桁数の多い値(大きい値)、例えば2億を表示する場合、MQL5では次のように指数表記することができます。
2e+08 もしくは 2E+08
単純に20000000000と表示するよりも短い桁数で表示できます。
この指数表記は、次のような意味が。
2×108
e(もしくはE)から後ろは10を何回べき乗するかを表したものなのです
MQL5では桁数の多い値を表示しようとすると、自動的にこの指数表記で出力されます。
小数部の長い値の指数表示
少数部が長い場合にも指数表記で短い桁数で表すことができます。
例えば、0.000000003(少数点以下の桁が9桁)を指数表記で表すと次のように表示することができます。
3e-09 もしくは 3E-09
これは10の-9乗を掛けた値であることを示した表記。
3×10-9