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

 
A100:

¿Qué tiene esto que ver con el fantasma?

Print(500000000000.00001); // 500000000000.0
 
¡Simplemente increíble! Demostrando tan obstinadamente y con toda seriedad que la respuesta equivocada es la correcta. No es mi culpa, se le ocurrió a él))
 
Alexandr Sokolov:

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

Bueno, yo comprobaría si he utilizado ese nombre en otro lugar.

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

Bueno, yo comprobaría si he utilizado ese nombre en algún otro lugar.

En el editor el nombre del valor de la variable no se muestra en azul (sólo está en el foro). Y es azul sólo en MQL4, mientras que en MQL5 es negro como siempre. No sé por qué es así y no parece afectar a la corrección del código, nadie volcó quejas con capturas de pantalla).

 
fxsaber:

No hay tal número entre los dobles. Es aproximadamente igual a 500000000.00100016593933105. Está asignado.

Lo tienes. ¿Y cuántos decimales hay? 8?

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

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

¿Qué es el 8 por defecto en MQL? ¿Dónde está el enlace a la documentación? ¿Y qué tiene que ver esto con el problema original?

 
   double x=500000000.0001;
   
   Alert((500000000.0001==NormalizeDouble(500000000.0001,4))); // true
 
int d(double x){
   int n;
   for(n=0;n<8;n++){
      if(x==NormalizeDouble(x,n)){
         return(n);
      }
   }
   return(n-1);
}
 
Dmitry Fedoseev:

Me arrodillo.

 

Dmitry Fedoseev:

int d(double x){
   int n;
   for(n=0;n<8;n++){
      if(x==NormalizeDouble(x,n)){
         return(n);
      }
   }
   return(n-1);
}
Creo que esto también funciona, pero aún no he probado nada, pero me hago a la idea, y los errores se pueden corregir sobre la marcha (si los hay)