Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 154
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Es decir, ¿hay que convertir 1,33182 en 1,3318? Simplemente se cortaría el 5º dígito después del punto decimal o se redondearía hasta el 4º dígito, por ejemplo, se tendría 1,3318 o 1,3319 a partir de 1,33186?
Mi pregunta es si hay un error o no. Al convertir de double a int en mi ejemplo, el resultado es uno menos. Por favor, compruébelo usted mismo.
La alerta debería dar 13318, pero da 13317. Si no se redondea a int, dará 13318,0 correctamente.Dime si hay alguna diferencia en las expresiones:
и
Dime si hay alguna diferencia en las expresiones:
и
Si tienes la sospecha de que algo no está bien, hazlo:
Mi pregunta es si hay un error o no. Al convertir de double a int en mi ejemplo, el resultado es uno menos. Compruébelo usted mismo.
La alerta debería dar 13318, pero da 13317. Así si no reducir a int, entonces da correctamente 13318.0provoca el descarte de la parte fraccionaria en lugar del redondeo (es decir, similar a MathFloor() en lugar de MathRound()), y en su caso, el número normalizado bien podría ser igual a 13318 exactamente, pero digamos 13317,9999999999997
que, cuando se emite en forma fraccionaria con un número limitado de dígitos, provoca el redondeo al resultado correcto (esperado), y cuando se descarta la parte fraccionaria de.... lo verás por ti mismo.
Espero haberme explicado con claridad.
¿existe un análogo del parcial de Sharp? o ¿cómo hacerlo?
no hay ningún análogo. se puede incrustar un trozo de definición usando #include <partial_class_code.mqh>.
Algunas personas incluso imitan la herencia múltiple de esta manera. // Yo no lo hago, me acostumbré a prescindir de ello. :)
Si sospecha que algo no funciona, hágalo:
Ya lo hice. Sólo por curiosidad.
Ya veo. Volviendo a su pregunta anterior, la esencia del registro se puede extraer de esta comparación:
No hay ninguna diferencia entre estas entradas. Al mismo tiempo, te recomiendo que pongas entre corchetes los cálculos matemáticos dentro de los if-os:
if (A<=(B1+B2*B3) && C<=(D1-D2*D3))
La alerta no produce un error. La cuestión es que la normalización lleva a un número a una forma binaria, que es la más cercana al análogo decimal solicitado, mientras que puede no coincidir con él en un sentido mayor o menor (en su caso). Ya que lo que se expresa por una fracción decimal finita, no siempre puede expresarse por una fracción binaria finita . Expresión
resulta en descartar la parte fraccionaria en lugar de redondear (es decir, se parece más a MathFloor() que a MathRound()), y en su caso el número normalizado podría ser 13317.999999999999997 en lugar de 13318 exactamente.
que, cuando se emite en forma fraccionaria con un número limitado de dígitos, provoca el redondeo al resultado correcto (esperado), y cuando se descarta la parte fraccionaria de.... lo verás por ti mismo.
Espero haberlo explicado claramente.
Gracias, ya veo.
Otra pregunta, ¿cómo puedo luchar contra esto si no puedo prescindir de la conversión a int?
Gracias, ya veo.
Otra pregunta, ¿cómo se hace frente a esto si no se puede prescindir de la transferencia a int?
y añades un par de epsilones.
DBL_EPSILON
El número más pequeño para el que se cumple la condición 1,0+DBL_EPSILON != 1,0