Obtener el número de decimales de cualquier número (no sólo las comillas) evitando Digits() en MQL4 y MQL5 - página 2

 
fxsaber:

Sí, ocho.

Por qué entonces.

void OnStart()
{
        double price = 500000000.0001;
        Print( price, ":", Digits_values( price ));
}

Digits_values devuelve 4 ?

Resultado: 500000000.0001:4

 

¿Cuántos dígitos hay después del punto decimal?

void OnStart()
{
        double price = 5000000000.0001;
        Print( price, ":", GetDigits( price ));
}

Al parecer, tantos que el ordenador no puede ni contar.

Resultado: ????

 
A100:

¿Por qué entonces

Digits_values devuelve 4 ?

Resultado: 500000000.0001:4

Estudia la conversión de cadenas.

 
A100:

¿Cuántos dígitos hay después del punto decimal?

Al parecer, tantos que el ordenador no puede ni contar.

Resultado: ????

Sí, como 1/3.

 
A100:

Una buena solución suele funcionar correctamente

Puede que no haya comprobado todo, pero cuando lo probé dos veces en MQL4, los valores de salida eran correctos

 
fxsaber:

Estudiar el reparto para encordar.

¿Qué tiene que ver esto con la conversión? Hay un número de fuente 500000000.0001

La pregunta es ¿cuántos decimales tiene? La respuesta es 4, y tienes 8.

 
A100:

Hay un número de fuente 500000000.0001

No hay tal número entre los dobles. Hay una cifra aproximada igual a ella: 500000000.000100016593933105. Se le asigna.

 
A100:

¿Qué tiene que ver esto con la conversión? Hay un número inicial 500000000.0001

La pregunta es ¿cuántos decimales tiene? La respuesta es 4, y tienes 8.

No "tienes 8", mql tiene 8 por defecto. ¿No podemos leer la documentación?

 
Alexandr Sokolov:

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.


El código en MQL4



¿No le preocupa un poco el hecho de que su parámetro Value esté coloreado en azul?

 
Алексей Тарабанов:

¿No te molesta lo más mínimo el hecho de que tengas el parámetro Valor en azul?

Por alguna razón es así aquí en el foro, pero en el editor es lo mismo de siempre