Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 107

 
Ciao, come posso imparare efficacemente MQL? Non sto cercando modi facili, voglio solo capire! Sto studiando il tutorial di Kovalev, guardando video, cercando di ripetere i codici che sono prescritti in esso. Ma ci sono così tanti errori anche quando ripeto il codice dal tutorial..... . Mi è stato detto che questo sito può aiutarmi, quindi sono qui! Cosa devo fare?
 
Forse ho fretta!
 
Alexey Kozitsyn:
Divide la stringa con il delimitatore ".".

Non è una cattiva idea...

Alexey Viktorov:
Non c'è bisogno di smontare nulla. Cambialo in stringa solo per vedere il numero giusto. Non c'è bisogno di fare nulla per i calcoli.

Se volete creare problemi, riconvertite la stringa in un numero StringToDouble() e moltiplicate per _Point normalizzato al numero giusto, probabilmente _Digits

Il punto è che ho bisogno di decomporre la stringa in 3 numeri, e non posso convertirla in un numero - risulta essere un numero molto grande per la lingua.

Ecco un esempio di tale numero

long CalcY=StringToDouble("111111111111111111");
Print ("CalcY=",CalcY);

Stampa il numero 111111111111111104

 
FOTOGRAF14:
Forse ho fretta!
Beh, non abbiate fretta! La fretta è necessaria solo quando si catturano le pulci ((c) umorismo dell'esercito).
 
-Aleks-:

Il fatto è che devi decomporre la stringa in 3 numeri, ma non puoi convertirla in un numero - risulta essere un numero molto grande per la lingua.

Ecco un esempio di tale numero

long CalcY=StringToDouble("111111111111111111");
Print ("CalcY=",CalcY);

Stampa il numero 111111111111111104

Fiabe...
 
Vitalie Postolache:
Racconti...

Provate voi stessi.

long CalcY=StringToDouble("111111111111111111");
Print ("CalcY=",CalcY);

long CalcZ=StringToInteger("111111111111111111");
Print ("CalcZ=",CalcZ);

double Test=CalcZ;
Print ("Test=",Test);

 
-Aleks-:

Provate voi stessi.

long CalcY=StringToDouble("111111111111111111");
Print ("CalcY=",CalcY);

long CalcZ=StringToInteger("111111111111111111");
Print ("CalcZ=",CalcZ);

double Test=CalcZ;
Print ("Test=",Test);

Intendo "un numero troppo grande", ma anche il codice non è corretto, quindi se volete convertire da formato a formato, dovreste farlo in questo modo:

long CalcY=(long)StringToInteger("111111111111111111");
Print ("CalcY=",IntegerToString(CalcY));

Quello di cui vi lamentate non è un grande numero, ma un difetto nell'output del testo.

 
Vitalie Postolache:
Voglio dire "un numero troppo grande".
Un numero troppo grande da calcolare accuratamente - altrimenti come si spiega l'errore alla fine del numero?
 
-Aleks-:
Un numero troppo grande da calcolare accuratamente - altrimenti come si spiega l'errore alla fine del numero?
sopra aggiunto.
 
Vitalie Postolache:
sopra aggiunto.

Così ho questa probrazzione - si può mettere una linea in lungo, ma ho bisogno del doppio per il calcolo delle virgole.

Motivazione: