Pregunta a los maestros del MQL4. De nuevo sobre la doble comparación. - página 11

 

No se prohibió silenciosamente. Pero abiertamente, después de dos advertencias. Este es un foro decente para gente seria. Tus vastos conocimientos no valen nada si no puedes transmitirlos en tu lengua materna (espero que no sea el albanés).

 

Léalo todo.

Muchas veces.

Diferentes ramas.

Pero todavía no he visto un resumen. Me gustaría tener detalles y claridad sobre esta cuestión.

Señores, por favor, si no es un fastidio, hagan una conclusión final (sobre esto) -

a todos, usuarios, perdedores, tontos, samovares - al comparar números de tipo doble utilizamos lo siguiente:

stdlib, bool CompararDos(doble número1,doble número2);

o

if (NormalizeDouble((a-b)>0,Digits)) {...}

o

int CompararPrecio(doble a, doble b)
{
a -= b;
b = Punto / 2;
si (a > b) devuelve (1);
si (a < -b) devuelve (-1);
retorno (0);
}

o

doble a;
doble b;
int factor = MathRound( MathPow(10, digits) ); // digits es la precisión a comparar
Si comparamos precios, esta es la variable predefinida Dígitos
...

si (MathRound( (a - b) * factor ) != 0)
{
... // a != b
}

si (MathRound( (a - b) * factor ) == 0)
{
... // a == b
}

si (MathRound( (a - b) * factor ) > 0)
{
... // a > b
}

si (MathRound( (a - b) * factor ) < 0)
{
... // a < b
}

o

Cuando se comparan números de tipo doble con una precisión de hasta 4-5 dígitos, no es necesario elaborar más.

Saludos, Alexander.

Razón de la queja: