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

 

Tenga en cuenta que el número normalizado cuando se envía al libro de registro utilizando Print() puede contener más decimales de los que espera. Por ejemplo,

luego en el comentario lo mismo

 
fxsaber:
#define TOSTRING(A) #A + " = " + (string)(A) + " "

void OnStart()
{
  double Price1 = 105143;
  double Price2 = Price1 - 1 e-11;

  Print(TOSTRING(Price1) + TOSTRING(MathFloor(Price1)) +
        TOSTRING(Price2) + TOSTRING(MathFloor(Price2)) +
        TOSTRING(Price1 > Price2));
}
Resultado
Price1 = 105143.0 MathFloor(Price1) = 105143.0 Price2 = 105143.0 MathFloor(Price2) = 105142.0 Price1>Price2 = true
No te tomes al pie de la letra la desinstalación de números dobles.

Gracias. Debo haber encontrado la solución correcta después de todo, ¡pero me preocupaba un error por la alineación incorrecta!

 

El resto de un número no normalizado dividido por otro número no normalizado, el resultado es en cualquier caso no normalizado.

Esta función debería eliminarse por completo del lenguaje, para no traumatizar la psique inmadura.

 
Vladislav Andruschenko:

Puede que haya encontrado la solución correcta después de todo.

Desgraciadamente, su código es una demostración de una completa incomprensión de lo que está haciendo. Intenta llegar al fondo de la cuestión.
 
Dmitry Fedoseev:

El resto de un número no normalizado dividido por otro número no normalizado, el resultado es en cualquier caso no normalizado.

Esta función debería eliminarse por completo del lenguaje, para no traumatizar la psique inmadura.

Bueno, todo está normalizado para mí. Eso es lo gracioso.
 
Vladislav Andruschenko:
Bueno, a mí me parece bien. Esa es la parte complicada.
Estás haciendo conversiones innecesarias que te hacen perder señales.

Normalice sólo antes de utilizar directamente los resultados de sus cálculos. Evite en lo posible todas las conversiones de números y conversiones de antemano.
 
Andrey Dik:
Estás haciendo conversiones innecesarias que provocan la pérdida de caracteres.
Estos son ya códigos desesperados..... Lo he hecho de diferentes maneras. Pero como se ha dicho anteriormente. Probablemente por haber tomado incorrectamente el error estaba pecando de ello. Aunque estas variables también tenían fallos en el código.

Gracias a todos por vuestra ayuda y sugerencias. Pero todo funciona claramente con el flotador.
 
Vladislav Andruschenko:
con el flotador todo funciona bien.
Una de las peores recomendaciones es pasar de doble a flotante.
 
Vladislav Andruschenko:
Bueno, a mí me parece bien. Eso es lo curioso.
¿En qué parte del mundo es normal?
 
Vladislav Andruschenko:
Ya son códigos desesperados..... Lo he hecho de diferentes maneras. Pero como se ha dicho anteriormente. Probablemente por haber aceptado incorrectamente que estaba pecando de un error. Aunque estas variables también tenían fallos en el código.

Gracias a todos por vuestra ayuda y sugerencias. Pero todo funciona claramente con el flotador.
La flotación es una castración numérica que no le da ninguna ventaja. Es mejor hacer frente a todas las pérdidas en las conversiones y utilizar la mayor precisión posible: el doble.