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

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

Resultado: 500000000.0001:4

4, pero no 8

 
Muy bien entonces... Báñate en esta alegría, si te gusta.
 
A100:

Lo has adivinado. ¿Y cuántos decimales hay? 8?

No necesito que me examinen.

  Print(NormalizeDouble(1234567890 + 1 e-7, 8) == 1234567890); // true
  Print(1234567890 + 1 e-7 == 1234567890); // true
 
fxsaber:

No necesito que me revisen.

No obstante, ha corregido su código, por lo que la comprobación ha sido útil

 
Imprimir ( 12345+1e-7)
 
A100:

No obstante, ha corregido su código

Mira de dónde se sacó el código. Y para qué propósito práctico estaba destinado. Si no está claro - para los precios.

El código no era infalible porque no estaba destinado a ser utilizado por un usuario de este tipo.

En el transcurso de la discusión, resultó que hay que aplicar la prueba de tontos si se publica el código. Si no, serán 5 páginas de mierda.

Así que, efectivamente, corregido. Una vez más, los números con dígitos infinitos son la norma.

 
Dmitry Fedoseev:

Sé cómo funciona NormalizeDouble, porque he jugado a su homólogo completo.

Todo depende mucho de los Dígitos que quieras conseguir. Si la representación es doble, su código da un valor diferente. Si los dígitos de una constante numérica, es correcto (y no siempre).

 
Ya estamos otra vez con los cuentagotas...
 
fxsaber:

Todo depende mucho de lo que necesites conseguir.

Necesitas uno

int f( double );

para que (en particular)

void OnStart()
{
        Print( f( NormalizeDouble( 500000000.0001, 4 )));
}

el resultado es igual: 4

 
A100:

Necesitas uno

a

El resultado fue: 4

Tal vez esa sea exactamente la función que necesita. Contesta al TS.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Cómo obtener los decimales de cualquier número (no sólo las comillas) evitando Digits() en MQL4 y MQL5

Alexandr Sokolov, 2018.11.03 17:39

Creo que no soy el único que se ha enfrentado a una situación rara en la que necesitaba obtener el número de decimales

Razón de la queja: