Double vs FLOAT - error MathFloor poco claro - página 5

 
El redondeo puede ser incorrecto si el número a redondear tiene cola, en cuyo caso se debe hacer una normalización con la precisión requerida antes de redondear
 
Taras Slobodyanik:
El redondeo puede ser erróneo si el número a redondear tiene cola, en este caso debe normalizar a la precisión correcta antes de redondear.

Seguro que la normalización es necesaria, quién dice que no lo haya hecho :-)

Y, por supuesto, los datos tenían cola, por lo que Mathfloor "iba por mal camino".

 
Vladislav Andruschenko:

Seguro que la normalización es necesaria, quién dice que no lo haya hecho :-)

Y, por supuesto, los datos tenían cola, por lo que Mathfloor "iba por mal camino".

su código no tiene normalización antes del redondeo)

Está en todas partes, pero al final se redondea un número no normalizado.

 
Taras Slobodyanik:

no hay normalización antes del redondeo)

Hay en todas partes, pero al final estás redondeando un número no normalizado.

Probé cientos de variantes del código, tiré una de las variantes aquí, pero resultó que el problema no estaba en el redondeo - sino en la salida de datos en la impresión y el comentario.

 
Vladislav Andruschenko:

Es comprensible que la normalización sea necesaria.

La normalización es una operación costosa y NormalizeDouble y MathFloor no son necesarios para esta tarea.
 
fxsaber:
Normalizar es una operación costosa y para esta tarea NormalizeDouble y MathFloor no son necesarios en absoluto.

son necesarios, y creo que debería añadirse al Manual una recomendación para MathFloor y MathCeil: "recomendar la normalización de los valores antes de realizar el redondeo".

ps. Yo mismo me encontré con esta característica una vez.

 
Taras Slobodyanik:

son necesarios, y creo que debería añadirse al Manual una recomendación para MathFloor y MathCeil: "recomendar la normalización de los valores antes del redondeo".

ps. Yo mismo me encontré con esta característica una vez.

Me tropecé con ella hace mucho tiempo.

Pero incluso la normalización no da el resultado esperado.

 
Entonces, ¿por qué funciona sin normalización y sin MathFloor?

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Double vs FLOAT - error MathFloor poco 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:
Entonces, ¿por qué funciona sin normalización y sin MathFloor?
¿Cumple el requisito de que si el diferencial es impar el precio debe estar más cerca de la oferta?
Al fin y al cabo, he utilizado MathFloor exactamente para eso.
 
Vladislav Andruschenko:
¿Cumple el requisito de que si el diferencial es impar, el precio debe estar más cerca de la oferta?
Sí.