価格 != 価格 ? - ページ 8 12345678 新しいコメント leoa451 2020.03.06 01:22 #71 このように、いろいろな解決策を試された方のために、私自身がかなり信頼できる解決策として書いたものをご紹介します。 もし、あなたがまだ解決策を探しているのなら、次のようなことに出くわしたということです。 107.123111111 と 107.123999 を比較すると、二重丸め分散の結果 107.123 と 107124 が比較される。 この問題に対する私の解決策は、+1 と -1 の範囲を無視し、比較から二重丸め分散を 取り除くことです。 試してみてください。 // double compare by leoa451 int CompDoubleE0L1M2(double DoubleA, double DoubleB, int PointsToCompare) { int IntForDoubleA = (int)(MathFloor(MathPow(10,PointsToCompare) * DoubleA)); int IntForDoubleB = (int)(MathFloor(MathPow(10,PointsToCompare) * DoubleB)); if(IntForDoubleA >= IntForDoubleB-1 && IntForDoubleA <= IntForDoubleB+1) { return 0; } // if doubleA within +1/-1 range of doubleB (to compensate for the double rounding veriance) else if(IntForDoubleA < IntForDoubleB) { return 1; } // if doubleA < doubleB else if(IntForDoubleA > IntForDoubleB) { return 2; } // if doubleA > doubleB else return -2; // error } Dretta 2020.12.04 04:04 #72 また、単純に2つのdoubleを比較し、boolの結果を必要とする場合の別の解決策を紹介します。 // return true if same double value within digits comparison bool CompareDoubleEqual(double a, double b, int digits) { if (MathAbs(a - b) > MathPow(10, -digits)) return(false); return(true); } William Roeder 2020.12.04 13:17 #73 Dretta: また、単純に2つのdoubleを比較し、boolの結果を必要とする場合、別の解決策を紹介します。 もし両者が1ポイントでも違えば、trueを返します。これは間違いである。両者は等しくない。 簡略化bool CompareDoubleEqual(double a, double b, int digits) { return MathAbs(a - b) < MathPow(10, -digits); }ストップロス後の増額注文 - MQL4プログラミングフォーラム #1.3 2017.05.29 12345678 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
このように、いろいろな解決策を試された方のために、私自身がかなり信頼できる解決策として書いたものをご紹介します。
もし、あなたがまだ解決策を探しているのなら、次のようなことに出くわしたということです。
107.123111111 と 107.123999 を比較すると、二重丸め分散の結果 107.123 と 107124 が比較される。
この問題に対する私の解決策は、+1 と -1 の範囲を無視し、比較から二重丸め分散を 取り除くことです。
試してみてください。
また、単純に2つのdoubleを比較し、boolの結果を必要とする場合の別の解決策を紹介します。
もし両者が1ポイントでも違えば、trueを返します。これは間違いである。両者は等しくない。
簡略化
ストップロス後の増額注文 - MQL4プログラミングフォーラム #1.3 2017.05.29