Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 474

 
Alexey Viktorov:
Non è tutto... https://www.mql5.com/ru/forum/66827
Strano uomo simpatico... Oh, bene...
 
Come faccio a conoscere il valore reale di una variabile di tipo double? Il punto è che a volte i millesimi vengono buttati fuori dalla stampa - la variabile stessa è formata da una stringa di testo, ma passa attraverso una procedura di arrotondamento.
 
-Aleks-:
Come faccio a conoscere il valore reale di una variabile di tipo double? Il fatto è che a volte migliaia di cifre vengono buttate fuori tramite la stampa - la variabile stessa è formata da una stringa di testo, ma passa attraverso una procedura di arrotondamento.
A cosa ti serve?
 
Alexey Kozitsyn:
Ahem. A cosa ti serve?
Per rilevare un errore nei calcoli :)
 
-Aleks-:
Per rilevare un errore nel calcolo :)
Volete confrontare più valori di tipo doppio?
 
Alexey Kozitsyn:
Volete confrontare diversi valori di tipo doppio?
Non proprio... si presuppone che i numeri non abbiano sempre un valore intero di 4=3.9999999999999999999 e si forma un'imprecisione dopo le operazioni matematiche dopo l'arrotondamento.
 

Potete per favore inviare messaggi e-mail dal terminale Metatrader 4 in modo tale che uno screenshot del grafico corrente sia preso e messo nel mezzo del messaggio. Esempio:

C'era un segnale di acquisto su EurUsd

<скриншот09122015_eurusd.png>

Ulteriori informazioni sull'apertura.

Mi dica come implementare questo? Forse c'è un esempio o qualcosa di simile che può essere rifatto. Grazie!
 
-Aleks-:
Non proprio... c'è un presupposto che i numeri non hanno sempre un valore intero di 4=3.9999999999999999999 e dopo aver fatto i conti, si ottiene un'imprecisione dopo l'arrotondamento.

Anche se appare un'imprecisione, usate NormalizeDouble(). Imposta la precisione che vuoi per i tuoi calcoli. Ecco a cosa serve questa funzione.

L'esempio lì sembra descrivere il tuo caso:

Dovreste essere consapevoli che il numero normalizzato quando viene emesso sul Journal usando Print() può contenere più cifre decimali di quanto vi aspettate. Per esempio,

DoubleToString(a,8)=76.67100000

Print(76.671)=76.67100000000001

 
Alexey Kozitsyn:

Anche se appare un'imprecisione, usate NormalizeDouble(). Imposta la precisione che vuoi per i tuoi calcoli. Ecco a cosa serve questa funzione.

L'esempio lì sembra descrivere il tuo caso:

Sì - descritto, sì - lo uso - la questione è solo come non attraverso la stampa e in generale la stringa per ottenere dati per l'analisi :)
 
-Aleks-:
Sì - è descritto, sì - lo uso - la questione è come non attraverso Print e la stringa in generale per ottenere dati per l'analisi :)

Usando lo stesso NormalizeDouble(). Si ottiene un numero di tipo doppio. Normalizzato. Semplicemente Print() lo emette in questo modo.

Qui è scritto come fare il confronto correttamente: https://www.mql5.com/ru/docs/basis/types/double

Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
  • www.mql5.com
Основы языка / Типы данных / Вещественные типы (double, float) - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5