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 3

 
A100:

O que isso tem a ver com o fantasma?

Print(500000000000.00001); // 500000000000.0
 
Isso é simplesmente incrível! Provando tão teimosamente e com toda a seriedade que a resposta errada é a certa. Não é minha culpa, ele inventou isso))
 
Alexandr Sokolov:

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

Bem, eu verificaria para ver se usei esse nome em outro lugar.

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

Bem, eu verificaria se já usei esse nome em outro lugar.

No editor, o nome da variável não é mostrado em azul (está apenas no fórum). E é azul somente na MQL4, enquanto na MQL5 é preta como de costume. Não sei por que é assim e não parece afetar a correção do código, ninguém jogou reclamações com screenshots).

 
fxsaber:

Não existe tal número entre as duplas. É aproximadamente igual a 500000000.00100016593933105. Ela é designada.

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

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

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

O que é o 8 padrão na MQL ? Onde está o link para a documentação? E o que isso tem a ver com o 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:

Eu me ajoelho.

 

Dmitry Fedoseev:

int d(double x){
   int n;
   for(n=0;n<8;n++){
      if(x==NormalizeDouble(x,n)){
         return(n);
      }
   }
   return(n-1);
}
Acho que isso também funciona, mas ainda não testei nada, mas entendo a idéia, e os erros podem ser corrigidos à medida que você for avançando (se houver algum)