Errori, bug, domande - pagina 1129

 

A100:
32'535'244'799 != 32'535'215'999 - какое правильное? 

Quello corretto sarebbe 32'535'215'999 per"3000.12.31 23:59:59"

E32'535'244'799 sarebbe corretto per"3001.01.01 07:59:59"

 
Fleder:

Il limite per il tipo datetime semplicemente non è definito correttamente:

Apparentemente il limite è definito considerando la possibilità di presentare l'ora locale in GMT o UTC allo stesso tempo. Avrebbe allora senso fare un intervallo più ampio (+/-12 ore) da -43'200 a 32'535'291'599
 
Fleder:

Il compilatore tratta il numero 13,7 come il tipo doppio. Ma allo stesso tempo questo numero può essere convertito senza perdite nel tipo float

e questo avvertimento non è necessario.

Come sapete che un numero reale 13,7 può essere convertito al tipo float senza perdite?
 
stringo:
Come sapete che il numero reale 13,7 può essere convertito al tipo float senza perdite?

Non è vero? Il numero 13,7 = 0,137*1e+2. Convertendo tre cifre decimali nel tipo float, c'è qualche perdita? Da quello che ho visto, la precisione si perde quando si cerca di convertire

numeri con sei o più cifre decimali.

Ho provato a usare il tipo float per salvare virgolette a cinque cifre (ad esempio 1.38829) in un file binario. Dopo averli letti dal file e aver provato a visualizzarli su un grafico come

L'indicatore grafico applicato alle candele del grafico stesso ha piccole discrepanze. Ma dopo la normalizzazione alla quinta cifra sono scomparsi.

Ma lì c'è stata una doppia perdita di precisione: prima era da doppio a galleggiante e poi di nuovo da galleggiante a doppio.

 
https://www.mql5.com/ru/docs/convert/normalizedouble Fleder:

Non è vero? Il numero 13,7 = 0,137*1e+2. Convertendo tre cifre decimali nel tipo float, c'è qualche perdita? Da quello che ho visto, la precisione si perde quando si cerca di convertire

numeri con sei o più cifre decimali.

Ho provato a usare il tipo float per salvare virgolette a cinque cifre (ad esempio 1.38829) in un file binario. Dopo averli letti dal file e aver provato a visualizzarli su un grafico come

L'indicatore grafico applicato alle candele del grafico stesso ha piccole discrepanze. Ma dopo la normalizzazione alla quinta cifra sono scomparsi.

Ma c'era una doppia perdita di precisione: prima dal doppio al float, e poi di nuovo dal float al doppio.

No. È una frazione infinita. Abbiamo scritto e scritto, ma tu non leggi.
 
stringo:
No. È una frazione infinita. Abbiamo scritto e scritto e tu non leggi

Noi leggiamo! Ma la perdita avviene "tecnicamente" (particolarità del formato) e in quelle frazioni che non sono nemmeno necessarie.

void OnStart()
{
  Print((float)(13.7));   //13.7 - потерь "не видно"
  Print((double)(13.7));  //13.7 - здесь тоже
}
Особенности работы с числами типа double в MQL4 - Статьи по MQL4
  • www.mql5.com
Особенности работы с числами типа double в MQL4 - Статьи по MQL4: примеры использования экспертов, тестирования и оптимизации
 
A100:

Anch'io ho avuto questo incidente. Si verifica quando si esegue uno script se il terminale (910) e il compilatore (921) non corrispondono

Ecco il codice

class A  {
        int     array[];
};
void OnStart()
{
        A *a = new A();
        if ( a != NULL )
                delete( a );
}

Compilatore 930, terminale 910. Risultato:

 
A100:

Ecco il codice

Compilatore 930, terminale 910. Risultato:

Come mai il terminale è 910 e il compilatore è 930?

Se entrambi sono 910, allora questo script non va in crash.

 

Solo non un terminale (non lo so esattamente, ma credo che questo sia comune nel Mercato)

Posso condividere l'originale dalla cartella ...\MQL5\Scripts

File:
Crash.ex5  4 kb
 
A100:

Solo non un terminale (non lo so esattamente, ma credo che questo sia comune nel Mercato)

Posso condividere l'originale dalla cartella ...\MQL5\Scripts

Beh, questo è quello che ho dovuto provareWin XP 32 bit:


Motivazione: