正確な」値を得ることは可能でしょうか? - ページ 2 1234567 新しいコメント Alexandr Bryzgalov 2014.10.04 07:34 #11 しかし、この値 0.099999999は、0.1 を返します。) Alexandr Bryzgalov 2014.10.04 07:44 #12 ということであれば、上記の引用文の方が、TCの課題としてふさわしいのではないでしょうか。void OnStart() { //--- int DIGITS=2; string stroka=DoubleToString(0.099999999,8); int P=StringFind(stroka,"."); Print(stroka); stroka=StringSubstr(stroka,0,P+DIGITS+1); Print(StringToDouble(stroka)); Print(NL(DIGITS,0.099999999)); } //+------------------------------------------------------------------+ double NL (int DIGITS,double value) { double step=1/MathPow(10,DIGITS); return (MathFloor(value/step)*step); }リターンです。2014.10.04 11:42:31.856 normalize EURUSD,H4: 0.09 2014.10.04 11:42:31.856 normalize EURUSD,H4: 0.1 2014.10.04 11:42:31.856 normalize EURUSD,H4: 0.10000000 削除済み 2014.10.04 07:48 #13 DoubleToStrとは 異なり、指定した精度で文字列を正確に切り捨てるという、まさに私がやりたいことを実現する関数をスケッチしてみたのです。string Normalize (string Normalize_Parse, int Normalize_Number, string Normalize_Separator = ".") { string Normalize_Before, Normalize_After; for (int i = 0; i <= StringLen (Normalize_Parse) - 1; i ++) { if (StringSubstr (Normalize_Parse, i, StringLen (Normalize_Separator)) == Normalize_Separator) { for (int ii = i + StringLen (Normalize_Separator); ii < i + StringLen (Normalize_Separator) + Normalize_Number; ii ++) { Normalize_After += StringSubstr (Normalize_Parse, ii, 1); } break; } Normalize_Before += StringSubstr (Normalize_Parse, i, 1); } return (Normalize_Before + (Normalize_After > 0 ? Normalize_Separator + Normalize_After : "")); }0.09864724」の結果。Comment (Normalize (0.09864724, 2)); // 0.090,-843158 " の結果です。Comment (Normalize ("0,-843158", 3, ",-")); // 0,-843ダブルと同様の操作。Comment ((double) Normalize (0.09, 2) * 5); // 0.45一通り検索してみましたが、そのような機能はMQL4(5?)にすでに存在します。ないのであれば、もっと前から追加しておけばいいのでは?:) Alexandr Bryzgalov 2014.10.04 07:53 #14 WePlexus:DoubleToStrとは 異なり、指定した精度で文字列を正確に切り捨てるという、まさに私がやりたいことを実現する関数をスケッチしてみたのです。0.09864724」の結果。0,-843158 " の結果です。ダブルと同様の操作。一通り検索してみましたが、そのような機能はMQL4(5?)にすでに存在します。ないのであれば、もっと前から追加しておけばいいのでは?:) それこそ "楽 "ですね(笑)。 Andrey F. Zelinsky 2014.10.04 07:55 #15 WePlexus:DoubleToStrとは 異なり、指定した精度で文字列を正確に切り捨てるという、まさに私がやりたいことを実現する関数をスケッチしてみたのです。0.09864724」の結果。0,-843158 " の結果です。ダブルと同様の操作。一通り検索してみましたが、そのような機能はMQL4(5?)にすでに存在します。ないのであれば、もっと前から追加しておけばいいのでは?:) あなたは非正確な例で操作している。だから、あなたの関数が正しく動作すると結論づけることは不可能だ。 を例にとると、このようになります。 0.019999999999の残し方 -- =0.01の残し方 Alexandr Bryzgalov 2014.10.04 07:56 #16 abolk: あなたは文字にならない例で操作している -- だから、あなたの機能が正しく動作すると結論づけることはできないのです。 を例にとると、このようになります。 0.019999999999の残し方 -- =0.01の残し方 は、最後の関数をチェックすると、0.01を残す。 Petros Shatakhtsyan 2014.10.04 08:00 #17 あなたが何をしたいのか、まだ理解できていません。0.098ではなく、0.098をチャートに表示させたいのであれば、そうしてくださいint a=0.098 * 100;double d=a/100.0;コメント(StringFormat("%G", d ); Andrey F. Zelinsky 2014.10.04 08:03 #18 sanyooooook: 最後の関数をチェックし、0.01を残す 関数のチェック -- 0.02を残す 削除済み 2014.10.04 08:08 #19 abolk: 関数を確認したところ、0.02を残していました。確かに、0.02。私の関数はもっと面倒かもしれませんが、正確に0.01を切り取ります。 削除済み 2014.10.04 08:08 #20 sanyooooook: 最後の関数をチェックし、0.01を残すabolkの 例から0.01を取るには、どのように関数を最適化すればよいのでしょうか? 1234567 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
しかし、この値
0.099999999
は、0.1 を返します。
)
ということであれば、上記の引用文の方が、TCの課題としてふさわしいのではないでしょうか。
リターンです。
DoubleToStrとは 異なり、指定した精度で文字列を正確に切り捨てるという、まさに私がやりたいことを実現する関数をスケッチしてみたのです。
0.09864724」の結果。
0,-843158 " の結果です。
ダブルと同様の操作。
一通り検索してみましたが、そのような機能はMQL4(5?)にすでに存在します。ないのであれば、もっと前から追加しておけばいいのでは?:)
DoubleToStrとは 異なり、指定した精度で文字列を正確に切り捨てるという、まさに私がやりたいことを実現する関数をスケッチしてみたのです。
0.09864724」の結果。
0,-843158 " の結果です。
ダブルと同様の操作。
一通り検索してみましたが、そのような機能はMQL4(5?)にすでに存在します。ないのであれば、もっと前から追加しておけばいいのでは?:)
DoubleToStrとは 異なり、指定した精度で文字列を正確に切り捨てるという、まさに私がやりたいことを実現する関数をスケッチしてみたのです。
0.09864724」の結果。
0,-843158 " の結果です。
ダブルと同様の操作。
一通り検索してみましたが、そのような機能はMQL4(5?)にすでに存在します。ないのであれば、もっと前から追加しておけばいいのでは?:)
を例にとると、このようになります。
0.019999999999の残し方 -- =0.01の残し方
あなたは文字にならない例で操作している -- だから、あなたの機能が正しく動作すると結論づけることはできないのです。
を例にとると、このようになります。
0.019999999999の残し方 -- =0.01の残し方
あなたが何をしたいのか、まだ理解できていません。
0.098ではなく、0.098をチャートに表示させたいのであれば、そうしてください
int a=0.098 * 100;
double d=a/100.0;
コメント(StringFormat("%G", d );
最後の関数をチェックし、0.01を残す
関数を確認したところ、0.02を残していました。
確かに、0.02。
私の関数はもっと面倒かもしれませんが、正確に0.01を切り取ります。
最後の関数をチェックし、0.01を残す