Duplo versus FLOAT - erro de MathFloor não claro - página 5

 
O arredondamento pode ser incorreto se o número a ser arredondado for seguido, caso em que a normalização deve ser feita com a precisão necessária antes do arredondamento
 
Taras Slobodyanik:
O arredondamento pode estar errado se o número a ser arredondado for seguido, neste caso você deve normalizar com a precisão correta antes do arredondamento.

Tenho certeza de que a normalização é necessária, quem pode dizer que eu não fiz isso :-)

E, é claro, os dados foram seguidos, então Mathfloor estava "indo na direção errada".

 
Vladislav Andruschenko:

Tenho certeza de que a normalização é necessária, quem pode dizer que eu não fiz isso :-)

E, é claro, os dados foram seguidos, então Mathfloor estava "indo na direção errada".

seu código não tem normalização antes do arredondamento)

Está lá em todos os lugares, mas no final você arredonda um número não normalizado.

 
Taras Slobodyanik:

você não tem normalização antes do arredondamento)

Há em todos os lugares, mas no final você está arredondando um número não-normalizado.

Tentei centenas de variantes do código, joguei uma das variantes aqui, mas como acabou, o problema não estava no arredondamento - mas na saída de dados na impressão e no comentário.

 
Vladislav Andruschenko:

É compreensível que a normalização seja necessária.

A normalização é uma operação cara e a NormalizeDouble e MathFloor não são necessárias para esta tarefa.
 
fxsaber:
Normalize é uma operação cara e para esta tarefa NormalizeDouble e MathFloor não são de forma alguma necessários.

e acho que uma recomendação para MathFloor e MathCeil deve ser adicionada ao Manual - "recomendar a normalização dos valores antes de realizar arredondamentos".

ps. Eu mesmo me deparei com esta característica uma vez.

 
Taras Slobodyanik:

e acho que uma recomendação para MathFloor e MathCeil deve ser adicionada ao Manual - "recomendar a normalização dos valores antes de realizar arredondamentos".

ps. Eu mesmo me deparei com esta característica uma vez.

Eu tropecei nele há muito tempo.

Mas mesmo a normalização não dá o resultado que se espera.

 
Então por que funciona sem a normalização e o MathFloor?

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Duplo versus FLOAT - erro de MathFloor não claro

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:
Então por que funciona sem a normalização e o MathFloor?
Será que cumpre a exigência de que se o spread for estranho, então o preço deve estar mais próximo da proposta?
Afinal, eu usei o MathFloor para exatamente isso.
 
Vladislav Andruschenko:
Será que cumpre a exigência de que, se o spread for estranho, o preço deve estar mais próximo da proposta?
Sim.
Razão: