Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 107

 
Hola! ¿Cómo puedo aprender eficientemente MQL? No busco formas fáciles, ¡sólo quiero entenderlo! Estoy estudiando el tutorial de Kovalev, viendo vídeos, intentando repetir los códigos que se prescriben en él. Pero hay muchos errores incluso cuando repito el código del tutorial..... . Me han dicho que este sitio puede ayudarme, ¡así que estoy aquí! ¿Qué debo hacer?
 
¡Quizá tenga prisa!
 
Alexey Kozitsyn:
Divide la cadena por el delimitador ".".

No es una mala idea...

Alexey Viktorov:
No es necesario desmontar nada. Cámbialo por una cadena sólo para ver el número correcto. No necesitas hacer nada para los cálculos.

Si quieres hacer problemas, convierte la cadena de nuevo en un número StringToDouble() y multiplícalo por _Punto normalizado al número correcto, probablemente _Dígitos

El caso es que necesito descomponer la cadena en 3 números, y no puedo convertirla en un número - resulta ser un número muy grande para el lenguaje.

He aquí un ejemplo de esta cifra

long CalcY=StringToDouble("111111111111111111");
Print ("CalcY=",CalcY);

Imprime el número 1111111111111104

 
FOTOGRAF14:
¡Quizá tenga prisa!
Bueno, ¡no tengas prisa! La prisa sólo es necesaria cuando se cazan pulgas ((c) humor del ejército).
 
-Aleks-:

El caso es que hay que descomponer la cadena en 3 números, pero no se puede convertir en un número - resulta ser un número muy grande para el lenguaje.

He aquí un ejemplo de esta cifra

long CalcY=StringToDouble("111111111111111111");
Print ("CalcY=",CalcY);

Imprime el número 1111111111111104

Cuentos de hadas...
 
Vitalie Postolache:
Cuentos...

Pruébalo tú mismo.

long CalcY=StringToDouble("111111111111111111");
Print ("CalcY=",CalcY);

long CalcZ=StringToInteger("111111111111111111");
Print ("CalcZ=",CalcZ);

double Test=CalcZ;
Print ("Test=",Test);

 
-Aleks-:

Pruébalo tú mismo.

long CalcY=StringToDouble("111111111111111111");
Print ("CalcY=",CalcY);

long CalcZ=StringToInteger("111111111111111111");
Print ("CalcZ=",CalcZ);

double Test=CalcZ;
Print ("Test=",Test);

Me refiero a "un número demasiado grande", pero el código también es incorrecto, así que si quieres convertir de formato a formato, debes hacerlo así:

long CalcY=(long)StringToInteger("111111111111111111");
Print ("CalcY=",IntegerToString(CalcY));

Lo que se queja de ahí no es un número grande, sino un fallo en la salida de texto.

 
Vitalie Postolache:
Me refiero a "un número demasiado grande".
Es un número demasiado grande para calcularlo con exactitud; si no, ¿cómo se explica el error al final del número?
 
-Aleks-:
Es un número demasiado grande para calcularlo con exactitud; si no, ¿cómo se explica el error al final del número?
arriba añadida.
 
Vitalie Postolache:
arriba añadida.

Así que tengo esta probación - se puede poner una línea en largo, pero necesito doble para los cálculos de la coma.