基礎から学ぶシステムトレード
シストレブログ人気ランキング  

シストレ徹底攻略シストレマスターへの道ワールド・トレーディング・エッジ基礎から学ぶシステムトレードシストレニュースシストレツールシストレナビTOPへ

 

2011年01月17日(月)

[MQL5]数値変数代入時の注意点 [MQL5]



前回の記事で、関数の戻り値の型が、それを代入する変数の型と違うと、コンパイルで警告が出る場合があるというお話をしました。

ただ、これは型が違えばいつも出るというものではなく、数値の表現範囲が大きい型から小さい型へ変換されるときに出るものです。どういうケースで警告が出るのか、順番に見ていきましょう。

整数を表す型では、それぞれの型で表現できる値の最大値は、

ulong > long > uint > int > ushort > short > uchar > char

の順です。なので、データが失われるかもしれないという警告は、左側の型のデータを右側の型のデータへ代入する場合のみに出ます。型が違っても、右側の型のデータを左側の型のデータに代入する場合は問題ありません。例えば、こんな感じです。
int x = 1;
long y = 2;
x = y; // 警告
y = x; // OK

実数を表す型についても、データの表現範囲の大きさは、
double > float

なので、同様に
float x = 1.0;
double y = 2.0;
x = y; // 警告
y = x; // OK

ということになります。

さらに整数と実数が混在した場合は、ちょっと複雑になります。それぞれの型で表現できる値の最大値だけ見ると、
double > float > ulong > long > ・・・

という順番なので、実数の型から整数の型に変換すると、同様の警告が出ます。

すると、逆に整数の型から実数の型であれば常にOKかというと、そうでもなく、今度は、数値の有効桁数(正確に表現できる桁数)の問題になります。

double、float のような実数の型は、この記事の最後に付けた【おまけ】のように、1.23×1023 のような指数表記で大きな数を表しているだけであり、整数に置き換えると、float で24ビット、double で53ビットの精度しかありません。

なので、それぞれの型の有効桁数は
ulong > long > double > uint > int > float > ushort > short > uchar > char

という順になります。

このことから、整数の型から実数の型への代入であっても、上の型の並びの中で左側の型から右側の型への代入を行う場合、同じ警告が出るのです。例えば、
int x = 1;
float y = 2.0;
double z = 3.0;
x = y; // 警告
x = z; // 警告
y = x; // 警告
z = x; // OK

といった具合です。

今回は、データの代入時の警告に注目して注意点を説明しました。但し、実際のプログラミングでは、型の違いについてそう神経質になる必要はありません。コンパイル時に警告が出たときに、ちょっと思い出してもらう程度で結構です。

【おまけ】
double、float の型は、原文の英語では「floating-point numbers」と書かれています。

訳すと「浮動小数点数」ということになるのですが、これはコンピュータの専門用語であり、一般の人に馴染みがないので、ここでは「実数」という言い方をしています。

では、なぜ「浮動小数点数」というのか、ということですが、それは doubelやfloatのデータ構造がM×2Eという指数表記になっているからです。例えば、10進数で考えると、1.2345×103 = 12.345×102のように指数部 E の値が変わると、同じ値でも小数点の位置が変わります。そういうことから、指数表記で表される実数のことを浮動小数点と呼ぶのです。


>>“基礎から学ぶシステムトレード”全記事バックナンバーはこちらから




Posted at 16時47分


ページのトップへ ページのトップへ

Sponsor AD

2011/1

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

プロフィール

豊嶋久道

2003年よりFX取引を始め、システムトレードの道へ。最近ではFXオプション取引も含めたトレーディングシステムの研究を行っている。システムトレードを基礎から正しく理解するための情報を発信する予定。

PHOTO

ランダムウォークとランダムトレード(2)

ランダムウォークとランダムトレード(2)

カテゴリーリスト

最近の記事

検索


当サイトコメントについて

当コメントは情報提供のみを目的として作成されたものであり、投資に関してはご自身でご判断くださいますようお願い致します。また、当資料は著作物であり著作権法により保護されております。無断で全文または一部を転載することはできません。

RSS1.0

[Login]


powered by a-blog
Copyright (C) 2008 PhiConcept,Inc. All rights reserved.