DoubleとFLOATの比較 - MathFloorの不明確なエラー - ページ 5

 
丸めようとする数値が 末尾にある場合、丸めが正しく行われないことがあります。この場合、丸めの前に必要な精度に正規化する必要があります。
 
Taras Slobodyanik:
四捨五入される数値が 尾を引いている場合、丸め方が間違っていることがあります。この場合、丸める前に正しい精度に正規化する必要があります。

ノーマライゼーションは必要だと思います、私がやっていないと誰が言うのでしょう :-)

そしてもちろん、データは尾を引いていたので、Mathfloorは「間違った方向に進んでいる」ことになります。

 
Vladislav Andruschenko:

ノーマライゼーションは必要だと思います、私がやっていないと誰が言うのでしょう :-)

そしてもちろん、データは尾を引いていたので、Mathfloorは「間違った方向に進んでいる」ことになります。

丸め前の正規化を行っていない)

どこにでもあることですが、最後に正規化されていない数字を四捨五入して いるんですね。

 
Taras Slobodyanik:

丸め前の正規化がない)

どこもそうですが、最後は正規化されていない数字を丸めて いるんですね。

私はコードの何百ものバリエーションを試して、私はここにバリアントのいずれかを投げたが、それが判明したように、問題は丸めではなく - 印刷とコメントのデータの出力であった。

 
Vladislav Andruschenko:

正常化が必要であることは明らかです。

正規化は高価な処理であり、NormalizeDoubleと MathFloorはこのタスクには全く必要ありません。
 
fxsaber:
Normalizeは高価な処理であり、このタスクではNormalizeDoubleとMathFloorは全く必要ない。

が必要で、MathFloorと MathCeilに対する推奨事項として、「丸めを行う前に値の正規化を推奨する」をハンドブックに追加すべきと思います。

ps. 私も一度この機能に出会いました。

 
Taras Slobodyanik:

が必要で、MathFloorとMathCeilに対する推奨事項として、「丸めを行う前に値の正規化を推奨する」をハンドブックに追加すべきと思います。

ps.私自身、一度この機能に出会ったことがあります。

昔、偶然に見つけたんです。

しかし、正規化しても期待する結果は得られない。

 
では、なぜ正規化やMathFloorがなくても動作するのでしょうか?

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

DoubleとFLOATの比較 - MathFloorの不明確なエラー

fxsaber さん 2017.02.26 08:53

#define ALPHA 0.1

int DoubleToInt( const double Num )
{
  return((int)(Num + ALPHA));
}

void OnStart()
{
  double NewPrice = DoubleToInt((Ask + Bid) / (2 * Point)) * Point;

  Print(NewPrice);
}
 
fxsaber:
では、なぜ正規化やMathFloorがなくても動作するのでしょうか?
スプレッドが奇数なら価格はビッドに近い方が良いという条件を満たしているのでしょうか?
結局、MathFloorは まさにそのために使ったんです。
 
Vladislav Andruschenko:
スプレッドが奇数である場合、価格はビッドに近くなければならないという条件を満たしているか。
はい。