Obter o número de casas decimais de quaisquer números (não apenas citações) contornando Dígitos() em MQL4 e MQL5 - página 4

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

Resultado: 500000000.0001:4

4, mas não 8

 
Muito bem, então... Banhe-se nesta alegria, se você gosta.
 
A100:

Você adivinhou. E quantas casas decimais existem? 8?

Eu não preciso ser testado.

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

Eu não preciso ser verificado.

No entanto, você corrigiu seu código - então a verificação foi útil

 
Impressão ( 12345+1e-7)
 
A100:

No entanto, você corrigiu seu código

Veja de onde o código foi tirado. E para que fim prático foi pretendido. Se não estiver claro - por preços.

Não houve nenhuma infalibilidade no código porque ele não se destinava a ser usado por tal usuário.

No decorrer da discussão, descobriu-se que a infalibilidade deve ser implementada se o código for publicado. Caso contrário, serão 5 páginas de merda.

Assim, de fato, corrigido. Mais uma vez, os números com dígitos infinitos são a norma.

 
Dmitry Fedoseev:

Eu sei como funciona o NormalizeDouble, porque joguei seu análogo completo.

Tudo depende muito dos Dígitos que você quer obter. Se a dupla representação, seu código dá um valor diferente. Se os dígitos de uma constante numérica estiverem corretos (e nem sempre).

 
Aqui vamos nós novamente com os conta-gotas...
 
fxsaber:

Tudo depende muito do que você precisa obter.

Você precisa de um

int f( double );

para que (em particular)

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

resultado é igual a: 4

 
A100:

Você precisa de um

para

O resultado foi: 4

Talvez seja exatamente essa a função que você precisa. Respondeu o TS.