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 2

 
fxsaber:

Sim, oito.

Por que então.

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

Dígitos_valores devolvidos 4 ?

Resultado: 500000000.0001:4

 

Quantos dígitos após o ponto decimal existem?

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

Aparentemente, tantos que o computador não consegue nem contar.

Resultado: ????

 
A100:

Por que então

Dígitos_valores devolvidos 4 ?

Resultado: 500000000.0001:4

Estudar a conversão de cordas.

 
A100:

Quantos dígitos após o ponto decimal existem?

Aparentemente, tantos que o computador não consegue nem contar.

Resultado: ????

Sim, como 1/3.

 
A100:

Uma boa solução geralmente funciona corretamente

Posso não ter verificado tudo, mas quando testei duas vezes na MQL4, os valores de saída estavam corretos

 
fxsaber:

Estudar o elenco para cordas.

O que isso tem a ver com a conversão? Há uma fonte número 500000000.0001

A questão é quantas casas decimais ela tem? A resposta é 4, e você tem 8.

 
A100:

Há uma fonte número 500000000.0001

Não existe tal número entre as duplas. Há um valor aproximado igual a ele - 500000000.00010001016593933105. Ela é atribuída a ele.

 
A100:

O que isso tem a ver com a conversão? Existe um número inicial 500000000.0001

A questão é quantas casas decimais ela tem? A resposta é 4, e você tem 8.

Não " você tem 8", o mql tem 8 por padrão. Não podemos ler a documentação?

 
Alexandr Sokolov:

Acho que não sou o único que teve uma situação rara em que precisei obter o número de casas decimais, e a função Dígitos() funciona apenas com citações, e além disso não há informações sobre isso em nenhum lugar (pelo menos na hora de escrever este post eu não o encontrei antes, então quero mostrar que solução encontrei).


Como se viu, a essência do banal é simples, mas ainda tem uma desvantagem - esta função não reconhece zeros, se depois deles não houver outros dígitos. Por exemplo, esta função retornará 2 quando seguida por 0,01, mas quando seguida por 0,0000 retornará 0 (o que significa que não pode ver quatro zeros). Portanto, considere esta lacuna em seus desenvolvimentos.


O código em MQL4



Você não está um pouco preocupado com o fato de seu parâmetro de Valor ser de cor azul?

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

Você não se incomoda um pouco com o fato de ter o parâmetro Valor em azul?

É assim aqui no fórum por alguma razão, mas no editor é o mesmo de sempre.