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
También acabo de intentar usar esto sin éxito. ¿Posiblemente DTS simplemente cambia la precisión de un valor para la apariencia y no el valor real? No veo ninguna otra opción.
Sí, creo que la cadena sólo hace que el valor en el doble una versión imprimible de la misma, pero no lo cambia. No estoy seguro de cómo hacerlo en MQL, pero sé que en Java puede forzar una conversión de tipo de un tipo a otro (en este caso, doble a int).
De los documentos de Oracle en http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html. Esto es sólo una pequeña parte del código presentado.
En tu caso, creo que deberías hacer que diga algo como
Obviamente tendrías que ajustar los nombres para que se ajusten mejor a tu código.
http://www.studytonight.com/java/type-casting-in-java también lo cubre allí. Dado que Java y MQL se supone que ambos se basan en C ++, esto podría ayudarle a cabo.
@OP además de leer todos los enlaces de MQL4 publicados anteriormente ver Working With Doubles y PrintFormat
@JD4 No veo cómo la publicación de código Java y haciendo referencia a las especificaciones de Java ayuda a la OP. También Java y C ++ son similares, pero no estoy de acuerdo que se basa en C ++
Aunque tratas de ser útil, creo que muchas de tus respuestas, cuando no estás seguro de las respuestas, sólo llevan a confundir a la gente que busca ayuda.
@OP además de leer todos los enlaces de MQL4 publicados anteriormente ver Working With Doubles y PrintFormat
@JD4 No veo cómo la publicación de código Java y haciendo referencia a las especificaciones de Java ayuda a la OP. También Java y C ++ son similares, pero no estoy de acuerdo que se basa en C ++
Aunque tratas de ser útil, creo que muchas de tus respuestas, cuando no estás seguro de las respuestas, sólo llevan a confundir a la gente que busca ayuda.
Creo que has interpretado mal mi post. El OO de Mql4 está ciertamente basado en c++, no creo que eso se pueda discutir. Me refería a tu afirmación
JD4: Since Java and MQL are both supposed to be based on C++, this might help you out.
seguido de un montón de referencias a Java. He dicho...
ydrol: También Java y C ++ son similares, pero no estoy de acuerdo que se basa en C ++
Me refería concretamente a tus referencias a Java. Java no está basado en c++ en mi opinión.
En cualquier caso el tema de la representación de decimales en coma flotante ha sido tratado varias veces en los hilos mencionados por WHRoeder anteriormente.
Parece que el OP quiere redondear a dos decimales, pero sin publicar ninguna salida o ejemplos específicos supongo que el grado de error de redondeo que están viendo puede ser ignorado.
Ambas cosas son erróneas. Se redondea al número entero más cercano. Irrelevante. Devuelve un doble. 1 = 1.0 = 1.00 = 1.00000 = 1.00000000000000000000000000 DÍGITOS INFINITOS
Aprende sobre el punto flotante. El operando ==. - Foro MQL4
La programación de computadoras es uno de los pocos lugares donde (int) 1 != (double) 1.00000000 (ad infinitum) en lo que respecta a los tipos de datos.
@ ydrol, me perdí la dirección de su intención con su declaración re MQL / Java / C ++. Algunos materiales de referencia para que usted pueda echar un vistazo en lo que respecta al origen de Java como un lenguaje de programación.
https://en.wikipedia.org/wiki/Java_(lenguaje_de_programación)
http://www.freejavaguide.com/history.html
Ya que ambos dicen casi lo mismo con respecto a C++, lo publicaré de la wiki: "El lenguaje deriva gran parte de su sintaxis de C y C++, pero tiene menos facilidades de bajo nivel que cualquiera de ellos".
De la misma época"La sintaxis de un lenguaje define su forma superficial ". ( corchetes, etc). Lo que se está discutiendo en este hilo no está relacionado con la sintaxis. Mi opinión es que decir que "Java está basado en C++" de la misma manera que lo está MQL, es una afirmación mucho más fuerte con la que no estoy de acuerdo.
Pero como es una afirmación cualitativa podemos tener razón y estar equivocados al mismo tiempo. Aún así no veo como las especificaciones de Java ayudan al OP, cuando hay un enlace específico ya dado con el tema y esto no era una pregunta relacionada con la sintaxis.
Los dos artículos que mencionas, destacan que Java toma prestado de la sintaxis - pero poco más. Esto no es una cuestión relacionada con la sintaxis.
Sin embargo, está relacionado con la representación de punto flotanteIEEE 754 utilizado por MQL, que también es compartida por las lenguas. (y muchos otros que no tienen c como sintaxis - por ejemplo, Pascal, o incluso aplicaciones como Excel) y esto es realmente porque es un estándar apoyado por la mayoría de CPU / FPU en lugar de similitudes sintácticas de los idiomas. La cuestión es la representación de punto flotante de fracciones decimales tiene pequeños errores. El OP quiere redondear a dos decimales. El formato IEEE754 no puede almacenar con precisión una décima (0,1) ni una centésima (0,01). En el formato binario IEEE 754 estas son fracciones binarias recurrentes, (de la misma manera que 1/3 es una fracción decimal recurrente 0.33333... ) - La diferencia entre el número previsto y el número real es bastante pequeña (por ejemplo 0.00000000000001 ) pero es lo suficientemente grande como para que
1/10 != 0.1 // probablemente
Y int(0.1 * 10) podría redondear de forma incorrecta
Pero como OP no ha publicado exactamente lo que están viendo el mejor consejo fue dado de vuelta en el 3er puesto de este tema, ir y leer los hilos MQL. No veo el punto de sugerir también leer las especificaciones de Java también después de los hilos MQL se dan y es probable que no tienen familiaridad con Java.
Resumen del hilo:
Lo anterior fue una respuesta específica a tu post específico"MathRound devuelve un doble; número infinito de decimales."
Una vez más, según la página de documentación
"Valordevuelto
Valor redondeado hasta el entero más cercano."
Ahora, una respuesta concreta a esta parte de tu post.
"Lo que dice la página, es lo que hace. Redondea. Nada que ver con la cuestión de los decimales múltiples."
De nuevo, relee la cita, dice que devuelve "Valor redondeado hasta el entero más cercano". Un entero, por definición, es un número entero, sin decimales. Y de nuevo, si esto no es lo que realmente hace, entonces el código o la descripción están rotos, y uno u otro, o ambos, necesitan ser arreglados por MQ, o bien una etiqueta de advertencia indicando que estas funciones no funcionan como se anuncia.
Si realmente devuelve el tipo que se le da, pero al equivalente matemático del valor del entero más cercano (como en devuelve 1.00000 de un 1.23456, y 1 == 1.00000) pero no devuelve un tipo de entero real, entonces la página de referencia necesita especificar algo como "no cambia el tipo de datos subyacente" o alguna otra forma que se indique claramente. Creo que esto fue una traducción plana de la página original en ruso, y como tal, no es tan claro en inglés como debería ser.