Ottenere il numero di posizioni decimali di qualsiasi numero (non solo le virgolette) bypassando Digits() in MQL4 e MQL5 - pagina 3

 
A100:

Cosa c'entra questo con il fantasma?

Print(500000000000.00001); // 500000000000.0
 
È semplicemente incredibile! Dimostrando così ostinatamente e in tutta serietà che la risposta sbagliata è quella giusta. Non è colpa mia, l'ha inventato lui))
 
Alexandr Sokolov:

È così qui sul forum per qualche motivo, ma nell'editor è lo stesso come al solito

Beh, controllerei se ho usato quel nome altrove.

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

Beh, controllerei se ho usato quel nome da qualche altra parte.

Nell'editor il nome del valore della variabile non è mostrato in blu (è solo sul forum). Ed è blu solo in MQL4, mentre in MQL5 è nero come al solito. Non so perché sia così e non sembra influenzare la correttezza del codice, nessuno ha scaricato lamentele con screenshot).

 
fxsaber:

Non c'è un numero simile tra i doppi. È approssimativamente uguale a 500000000.00100016593933105. Viene assegnato.

Cisiamo capiti. E quanti decimali ci sono? 8?

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

Non "hai 8", mql ne ha 8 di default. Non possiamo leggere la documentazione?

Qual è l'8 di default in MQL? Dov'è il link alla documentazione? E cosa c'entra questo con il problema originale?

 
   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:

Mi inginocchio.

 

Dmitry Fedoseev:

int d(double x){
   int n;
   for(n=0;n<8;n++){
      if(x==NormalizeDouble(x,n)){
         return(n);
      }
   }
   return(n-1);
}
Penso che anche questo funzioni, ma non ho ancora testato nulla, ma ho capito l'idea, e gli errori possono essere corretti man mano che si procede (se ce ne sono)
Motivazione: