NormalizeDouble関数を活用すべし
double型の計算誤差のお話です。
2/3を計算すると0.666…となりますが、どこかで見切りをつけなければなりません。無限には持てませんから。
その見切りが計算誤差となります。
double型の場合、小数点以下15桁目までが有効桁となります。
つまり、2/3の場合、0.666666666666667となります。
あれこれと計算(通常、割り算)しているとこのようなケースによく遭遇します。
具体例をあげられずに申し訳ないのですが、明示的に割り算していなくてもMQL4の標準関数を使っているだけで計算誤差が発生することもあります。
MQL4のdouble型の計算誤差については以下の記事でも取り上げられています。
対処方法としては、double型の変数を扱う際は、まめにNormalizeDouble関数で指定小数点桁数に丸めることですね。
特にdouble型同士をif文で比較する時は必須です。
そうしないと、プログラムは不一致と判定しているのにPrint文での出力値は同じになり、頭の中がはてなマークでいっぱいになることになります。
すんごい地味なことなんですけど、この問題は結構頻繁に発生しますので、くれぐれもご注意ください。