初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 474

 
Alexey Viktorov:
それだけではありません...https://www.mql5.com/ru/forum/66827
妙にいい人...。まあ、いいや...。
 
double 型の 変数の実値を知るにはどうしたらいいですか?要はprintで1000分の1が捨てられることがあるということです。変数自体はテキスト文字列から形成されますが、丸め手続きを経ることになります。
 
-Aleks-:
double 型の 変数の実値を知るにはどうしたらいいですか?変数自体はテキスト文字列から形成されますが、丸め処理を経るため、時には数千桁の数字が印刷によって吐き出されることがあることです。
何に使うんだ?
 
Alexey Kozitsyn:
エヘン。何のために必要なのか?
計算の誤りを検出するため :)
 
-Aleks-:
計算の誤りを検出するため :)
double 型の 複数の値を比較したいですか?
 
Alexey Kozitsyn:
double 型の 複数の値を比較したいですか?
そうでもない...。4=3.999999999の整数値とは限らないという前提があり、四捨五入して演算すると不正確な数値が形成される。
 

メタトレーダー4ターミナルから、現在のチャートのスクリーンショットを撮ってメッセージの途中に入れるような形でメール送信してもらえないでしょうか。例

EurUsdに 買いシグナルが発生しました。

<скриншот09122015_eurusd.png>

オープニングに関する追加情報です。

どのように実装すればいいのか教えてください。もしかしたら、やり直せるような例や似たようなものがあるかもしれません。ありがとうございます。
 
-Aleks-:
ちょっと違うかな...。は、数字が常に4=3.999999999という整数値を持つとは限らないという前提があり、計算した結果、丸め後に不正確な値が得られる。

不正確な値が表示されても、NormalizeDouble() を使用してください。計算に必要な精度を設定します。そのための機能です。

そこにある例は、あなたのケースを表しているようです。

Print()で正規化した数値をJournalに出力する場合、小数点以下の桁数が予想以上に多くなることに注意する必要があります。例えば、こんな感じです。

DoubleToString(a,8)=76.67100000

Print(76.671)=76.67100000000001

 
Alexey Kozitsyn:

不正確な値が表示されても、NormalizeDouble() を使用してください。計算に必要な精度を設定します。そのための機能です。

そこにある例は、あなたのケースを表しているようです。

はい - 記述された、はい - 私はそれを使用する - 問題は、ちょうど方法ではないを通じてプリントと一般的な文字列で分析のためのデータを取得することです:)
 
-Aleks-:
はい - それは説明されている、はい - 私はそれを使用して - 問題は、どのように分析するためのデータを取得するために、一般的に印刷や文字列を介していないです:)

同じNormalizeDouble()を使用しています。タイプdoubleの 数字を取得します。ノーマライズされる。単純にPrint()するとこのように出力されます。

ここでは、正しい比較の仕方を書いています。https://www.mql5.com/ru/docs/basis/types/double

Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
  • www.mql5.com
Основы языка / Типы данных / Вещественные типы (double, float) - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
理由: