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

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

 

2009年11月24日(火)

整数と実数の違い [プログラミング]



電卓などで計算する場合、計算する数や結果が整数なのか、実数なのかはそんなに意識していないと思います。

「10/4=2.5」のように、整数同士の計算でも結果が実数であれば、実数として結果が表示されるのが普通です。

ところが、これが当たり前と思っていると、CやMQL4でのプログラムで結果が合わずに悩むことになってしまいます。

プログラム中で、1, -2, や、1.5、-2.5 などの具体的な数値のことを「数値定数」と呼びます。

この数値定数は、どんな値でも単なる数値にしか見えませんが、実際にはプログラム中で整数なのか、実数なのか区別されています。

どこで区別しているかは小数点の有無です。

1や-2など小数点がついていない数値は整数で、1.5や-2.5など小数点がついている数値は実数とみなされます。

そして、もうひとつの決まりは、整数同士の計算結果は整数、実数同士、あるいは整数と実数の計算結果は実数となるということです。

足し算(+)、引き算(-)、掛け算(*)の場合、この決まりのままで特に問題ありませんが、割り算(/)の場合、10/4=2.5の例のように整数同士の計算でも結果が実数になることがあります。

特に注意する必要があるのは、このケースです。例えば、

int start()
{
Print(10/4);
return(0);
}

のようなMQL4プログラムを実行すると、結果は2.5ではなく、「2」となります。これは整数同士の計算なので、正しい結果の2.5の小数部分が切り捨てられて、整数値「2」となるわけです。

でも、これはプログラムが間違っているわけではありません。MQL4の文法として決められた通りに計算しているだけなのです。

このようなケースでは、人がちょっと気を使ってプログラムする必要があります。結果が実数になる可能性がある式では、計算する数値の少なくとも1つを実数として表現する必要があるのです。

例えば、10の代わりに「10.0」、あるいは「10.」と書くと小数点を含むので実数とみなされます。
Print(10.0/4);
Print(10/4.0);
Print(10.0/4.0);

のいずれかの書き方をすれば、結果は実数となり、正しく「2.5」という値が表示されるはずです。

余談ですが、どうしてこう面倒くさく、整数と実数を区別しなくてはならないのでしょう?

これは単にコンピュータの都合ということなんです。

コンピュータの中では、整数と実数は全然違った形式のデータとなっており、計算の方法も全然違うのです。なので、コンピュータ上で効率よく計算させるためには、整数と実数を区別した方がいいということなのです。

プログラムとうまく付き合うためには、コンピュータの気持ちになってみることが必要かもしれませんね。


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




Posted at 15時39分


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

Sponsor AD

2009/11

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          

プロフィール

豊嶋久道

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

PHOTO

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

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

カテゴリーリスト

最近の記事

検索


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

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

RSS1.0

[Login]


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