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

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

Risultato: 500000000.0001:4

4, ma non 8

 
Va bene allora... Immergetevi in questa gioia, se vi piace.
 
A100:

Avete indovinato. E quanti decimali ci sono? 8?

Non ho bisogno di essere messo alla prova.

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

Non ho bisogno di essere controllato.

Tuttavia, hai corretto il tuo codice - quindi il controllo è stato utile

 
Stampa ( 12345+1e-7)
 
A100:

Tuttavia, hai corretto il tuo codice

Guardate da dove è stato estratto il codice. E a quale scopo pratico era destinato. Se non è chiaro - per i prezzi.

Non c'era nessuna infallibilità nel codice perché non era destinato ad essere usato da un tale utente.

Nel corso della discussione, è emerso che l'infallibilità deve essere implementata se il codice viene pubblicato. Altrimenti saranno 5 pagine di merda.

Così, infatti, corretto. Ancora una volta, i numeri con infinite cifre sono la norma.

 
Dmitry Fedoseev:

So come funziona NormalizeDouble, perché ho giocato la sua controparte completa.

Tutto dipende molto da quali cifre vuoi ottenere. In caso di doppia rappresentazione, il tuo codice dà un valore diverso. Se le cifre di una costante numerica sono corrette (e non sempre).

 
Ci risiamo con i contagocce...
 
fxsaber:

Tutto dipende molto da cosa avete bisogno di ottenere.

Hai bisogno di uno

int f( double );

in modo che (in particolare)

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

risultato è uguale a: 4

 
A100:

Hai bisogno di uno

a

Il risultato è stato: 4

Forse questa è esattamente la funzione di cui avete bisogno. Ha risposto al TS.

Forum sul trading, sistemi di trading automatico e test di strategia

Come ottenere le posizioni decimali di qualsiasi numero (non solo le virgolette) bypassando Digits() in MQL4 e MQL5

Alexandr Sokolov, 2018.11.03 17:39

Penso di non essere l'unico ad aver affrontato una rara situazione in cui avevo bisogno di ottenere il numero di cifre decimali

Motivazione: