double型には計算誤差が常につきまとう

NormalizeDouble関数を活用すべし

double型の計算誤差のお話です。

2/3を計算すると0.666…となりますが、どこかで見切りをつけなければなりません。無限には持てませんから。

その見切りが計算誤差となります。

double型の場合、小数点以下15桁目までが有効桁となります。

つまり、2/3の場合、0.666666666666667となります。

あれこれと計算(通常、割り算)しているとこのようなケースによく遭遇します。

具体例をあげられずに申し訳ないのですが、明示的に割り算していなくてもMQL4の標準関数を使っているだけで計算誤差が発生することもあります。

MQL4のdouble型の計算誤差については以下の記事でも取り上げられています。

対処方法としては、double型の変数を扱う際は、まめにNormalizeDouble関数で指定小数点桁数に丸めることですね。

特にdouble型同士をif文で比較する時は必須です。

そうしないと、プログラムは不一致と判定しているのにPrint文での出力値は同じになり、頭の中がはてなマークでいっぱいになることになります。

すんごい地味なことなんですけど、この問題は結構頻繁に発生しますので、くれぐれもご注意ください。

MT4の無料プログラミング講座

メルマガ登録して、MT4のプログラミング講座を無料で受けちゃおう!

超豪華プレゼントも盛りだくさん♪

MT4プログラミングを習得すると、オリジナルEA運用、作成代行、商品販売等、複数の収入源を手に入れられるよ。副業に最適だね!

↓↓↓ 詳細はこちら ↓↓↓

アイキャッチ

>

エターナル・パートナーPRO ~MT4裁量トレード支援ツール~ 「MT4は裁量トレーダーに優しくない」そう思ったことありませんか?もっと快適にトレードするための強力な売買ツールが必要だと考え、開発したのが「エターナル・パートナーPRO」です。元々は自分自身のために開発したツールですので、手抜き無しのガチものです。既に200名近い方に手に取っていただき、喜びの声が続々と届いております。ぜひご覧ください!

CTR IMG