Obtenir le nombre de décimales de n'importe quel nombre (pas seulement les guillemets) en contournant Digits() dans MQL4 et MQL5 - page 3

 
A100:

Qu'est-ce que ça a à voir avec le fantôme ?

Print(500000000000.00001); // 500000000000.0
 
C'est tout simplement incroyable ! Prouver avec tant d'obstination et de sérieux que la mauvaise réponse est la bonne. Ce n'est pas ma faute, c'est lui qui l'a inventé))
 
Alexandr Sokolov:

C'est comme ça ici sur le forum pour une raison quelconque, mais dans l'éditeur, c'est comme d'habitude.

Je vérifierais si j'ai utilisé ce nom ailleurs.

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

Eh bien, je vérifierais si j'ai utilisé ce nom ailleurs.

Dans l'éditeur, le nom de la valeur de la variable n'est pas affiché en bleu (c'est seulement sur le forum). Et il est bleu uniquement dans le MQL4, alors que dans le MQL5 il est noir comme d'habitude. Je ne sais pas pourquoi il en est ainsi et cela ne semble pas affecter la correction du code, personne n'a déposé de plainte avec des captures d'écran).

 
fxsaber:

Il n'y a pas de tel numéro parmi les doubles. Il est approximativement égal à 500000000.00100016593933105. Il est attribué.

Tu l'as. Et combien de décimales y a-t-il ? 8 ?

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

Pas "vous en avez 8", mql en a 8 par défaut. Ne pouvons-nous pas lire la documentation ?

Quelle est la valeur par défaut de 8 dans MQL ? Où se trouve le lien vers la documentation ? Et qu'est-ce que cela a à voir avec le problème initial ?

 
   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:

Je m'agenouille.

 

Dmitry Fedoseev:

int d(double x){
   int n;
   for(n=0;n<8;n++){
      if(x==NormalizeDouble(x,n)){
         return(n);
      }
   }
   return(n-1);
}
Je pense que cela fonctionne aussi, mais je n'ai encore rien testé, mais je comprends l'idée, et les erreurs peuvent être corrigées au fur et à mesure (s'il y en a).