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

 
fxsaber:

Sì, otto.

Perché allora.

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

Digits_values restituisce 4 ?

Risultato: 500000000.0001:4

 

Quante cifre dopo la virgola ci sono?

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

Apparentemente così tanti che il computer non può nemmeno contare.

Risultato: ????

 
A100:

Perché allora

Digits_values restituisce 4 ?

Risultato: 500000000.0001:4

Studia la conversione delle stringhe.

 
A100:

Quante cifre dopo la virgola ci sono?

Apparentemente così tanti che il computer non può nemmeno contare.

Risultato: ????

Sì, come 1/3.

 
A100:

Una buona soluzione di solito funziona correttamente

Forse non ho controllato tutto, ma quando l'ho provato due volte su MQL4, i valori di uscita erano corretti

 
fxsaber:

Studiare il calco per incordare.

Cosa c'entra questo con la conversione? C'è un numero di fonte 500000000.0001

La domanda è: quante cifre decimali ha? La risposta è 4 e tu hai 8.

 
A100:

C'è un numero di fonte 500000000.0001

Non c'è un numero simile tra i doppi. C'è un approssimativo uguale ad esso - 500000000.00010001016593933105. È assegnato ad esso.

 
A100:

Cosa c'entra questo con la conversione? C'è un numero iniziale 500000000.0001

La domanda è: quante cifre decimali ha? La risposta è 4 e tu hai 8.

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

 
Alexandr Sokolov:

Penso di non essere l'unico che ha avuto una rara situazione in cui avevo bisogno di ottenere il numero di cifre decimali, e la funzione Digits() funziona solo con le virgolette, e inoltre non ci sono informazioni al riguardo da nessuna parte (almeno al momento di scrivere questo post non le ho trovate prima, quindi voglio mostrare quale soluzione ho trovato).


Come si è scoperto, l'essenza del semplice banale, ma ha ancora un inconveniente - questa funzione non riconosce gli zeri, se dopo di loro non ci sono altre cifre. Per esempio, questa funzione restituirà 2 quando è seguita da 0,01, ma quando è seguita da 0,0000 restituirà 0 (il che significa che non può vedere quattro zeri). Quindi, considerate questa lacuna nei vostri sviluppi.


Il codice in MQL4



Non sei un po' preoccupato dal fatto che il tuo parametro Value è colorato di blu?

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

Non ti disturba minimamente il fatto di avere il parametro Value in blu?

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

Motivazione: