Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Et laissons la question des défauts de Print() sans réponse, d'accord ? :)
Peu importe.
OK. Alors je vais prendre le courage à deux mains. Ainsi, la description de la fonction Print() indique que "les données de type double sont imprimées avec la précision de 16 chiffres décimaux après le point". En fait, il s'avère que la fonction Print() produit des données quelque peu arrondies:
void OnStart() { double a,b; a=7.0/200.0; b=7.0/a; Print("Print(b)=",b); Print("Print(DoubleToString(b,16))=",DoubleToString(b,16)); }
MP 0 victorg2 (EURUSD,M1) 11:04:42 Print(DoubleToString(b,16))=199.99999999999716
OK. Alors je vais prendre le courage à deux mains. Ainsi, la description de la fonction Print() indique que "les données de type double sont imprimées avec la précision de 16 chiffres décimaux après le point". En fait, il s'est avéré que la fonction Print() produit des données légèrement arrondies:
MP 0 victorg2 (EURUSD,M1) 11:04:42 Print(DoubleToString(b,16))=199.999999999999999716
123.4567890123456(7>5, donc arrondi au supérieur)
Tout semble correspondre à la description. Quel est le problème ? Les zéros ne sont pas imprimés ?
Le bogue est que la fonction Print() n'affiche pas"Data of type double with an accuracy of 16 decimal digits after the dot".
vérifier
Print("Print(b)="+ b);
vérifier
Je n'ai pas pris la peine de vérifier.
Tout d'abord, le compilateur génère "implicit conversion from 'number' to 'string' victorg2.mq5 12 22".
Deuxièmement,
IS 0 victorg2 (EURUSD,M1) 17:46:45 Print(b)=200
PJ 0 victorg2 (EURUSD,M1) 17:46:45 Print(DoubleToString(b,16))=199.99999999999716
Utilisez la fonction PrintFormat appropriée pour un contrôle complet du format :
L'impression se fait par défaut en mode d'arrondi normal de deux à quatre chiffres. Nous allons corriger la documentation.Veuillez me donner des pointeurs (handles) vers des structures (de préférence aussi vers des tableaux, y compris statiques).
L'enveloppement dans les classes est souvent une mauvaise solution :
2012.04.07 20:49:38 SizeOf_Test (USDJPY,M30) sizeof(SEmpty) = 0
Veuillez donner des pointeurs (handles) sur les structures (de préférence sur les tableaux également, y compris les tableaux statiques).
Que voulez-vous dire et pourquoi ?
1. dans quel sens et
2. pourquoi ?
1.
CEmpty *C[]; // Это работает. SEmpty *S[]; // Error: 'SEmpty' - class type expected SizeOf_Test.mq5 19 1
Pour créer des tableaux de pointeurs vers des structures (tableaux). avec une initialisation ultérieure for(i){ S[i] = GetPointer(StaticStruct[i]) ; }
2. conserver des tableaux solides (emballés) de données significatives.
Important lorsqu'il s'agit de la sortie de données vers des tampons OpenCL bruts (ou l'envoi vers une DLL, l'écriture dans des fichiers, etc.)
En même temps, il est possible de réorganiser les accès aux données (par exemple, lors du tri des pointeurs) sans réécrire les données.