Obtener el número de decimales de cualquier número (no sólo las comillas) evitando Digits() en MQL4 y MQL5
Creo que no soy el único que ha tenido una situación rara en la que necesitaba obtener el número de decimales, y la función Digits() sólo funciona con comillas, y además no hay información al respecto en ningún sitio (al menos en el momento de escribir este post la he encontrado antes, por eso quiero mostrar la solución que he encontrado).
Resultó que la esencia es banalmente simple, pero todavía tiene un inconveniente - esta función no reconoce los ceros, si después de ellos no hay otros dígitos. Por ejemplo, la función devolverá 2 cuando vaya seguida de 0,01, pero cuando vaya seguida de 0,0000 devolverá 0 (lo que significa que no puede ver cuatro ceros). Por lo tanto, debe tener en cuenta esta carencia en sus desarrollos.
El código en MQL5 tuvo que ser ligeramente mejorado, ya que aparentemente en MQL5 las variables de tipo doble son automáticamente asignadas , 0 al final, sin importar si la variable es asignada a un entero o no. Por esta razón, la función nunca ha devuelto 0.
Supongamos que damos el número 2,4875 y la función devuelve 4.
¿Qué debemos hacer con él? Algo que no entiendo el punto de(
Creo que no soy el único que ha tenido una situación rara en la que necesitaba obtener el número de decimales, y la función Digits() sólo funciona con comillas, y además no hay información al respecto en ningún sitio (al menos en el momento de escribir este post la he encontrado antes, por eso quiero mostrar la solución que he encontrado).
Resultó que la esencia es banalmente simple, pero todavía tiene un inconveniente - esta función no reconoce los ceros, si después de ellos no hay otros dígitos. Por ejemplo, esta función devolverá 2 cuando vaya seguida de 0,01, pero cuando vaya seguida de 0,0000 devolverá 0 (lo que significa que no puede ver cuatro ceros). Por lo tanto, considere esta carencia en sus desarrollos.
Código en MQL4
El código en MQL5
El código de MQL5 tuvo que ser ligeramente mejorado, ya que aparentemente en MQL5 a las variables de tipo doble se les asigna automáticamente 0 al final, sin importar si la variable es un entero o no. Por esta razón, la función nunca ha devuelto 0.
string string_value = (string)value;
no sigas leyendo :-)
Supongamos que damos el número 2,4875, la función devolverá 4.
¿Qué hacemos con él? Parece que no entiendo el punto(
Dependiendo de quién necesite qué. Por ejemplo, necesitaba números enteros para calcular más fácilmente el índice de correlación
no hace falta que sigas leyendo :-)
¿Qué es lo que no está claro para un programador aquí?)
En todo caso, hay una función StringFind(), no es necesario hacer un bucle a través de los caracteres para encontrarlo.
gracias
también es una buena solución
también es una buena solución
Una buena solución suele funcionar correctamente
void OnStart() { double price = 500000000.0001; Print( price, ":", GetDigits( price )); }
Resultado: 500000000.0001:8
¿Cuántos dígitos después del punto decimal? ¿Realmente son 8?
Una buena solución suele funcionar correctamente
Resultado: 500000000.0001:8
¿Cuántos dígitos después del punto decimal? ¿Realmente son ocho?
Sí, ocho.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Creo que no soy el único que ha tenido una situación rara en la que necesitaba obtener el número de decimales, y la función Digits() sólo funciona con comillas, y además no hay información al respecto en ningún sitio (al menos en el momento de escribir este post no la he encontrado antes, así que quiero mostrar la solución que he encontrado).
Al final resultó que, la esencia de la simple banal, pero todavía tiene un inconveniente - esta función no reconoce los ceros, si después de ellos no hay otros dígitos. Por ejemplo, esta función devolverá 2 cuando vaya seguida de 0,01, pero cuando vaya seguida de 0,0000 devolverá 0 (lo que significa que no puede ver cuatro ceros). Por lo tanto, considere esta carencia en sus desarrollos.
Código en MQL4
El código en MQL5
El código de MQL5 tuvo que ser ligeramente mejorado, ya que aparentemente en MQL5 a las variables de tipo doble se les asigna automáticamente 0 al final, sin importar si la variable es un entero o no. Por esta razón, la función nunca ha devuelto 0