Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Y dejemos abierta la pregunta sobre los fallos de Print()? :)
Lo que sea.
BIEN. Entonces, me atreveré. Así, la descripción de la función Print() dice que "los datos del tipo double se imprimen con la precisión de 16 dígitos decimales después del punto". De hecho, resulta que la función Print() produce datos algo redondeados:
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.999999999716
DE ACUERDO. Entonces, me atreveré. Así, la descripción de la función Print() dice que "los datos del tipo double se imprimen con la precisión de 16 dígitos decimales después del punto". En realidad, resultó que la función Print() produce datos ligeramente redondeados:
MP 0 victorg2 (EURUSD,M1) 11:04:42 Print(DoubleToString(b,16))=199.9999999999999716
123.4567890123456(7>5, por lo tanto redondeado)
Todo parece ajustarse a la descripción. ¿Cuál es el problema? ¿No se imprimen los ceros?
El error consiste en que la función Print() no muestra"Datos de tipo double con una precisión de 16 dígitos decimales después del punto".
comprobar
Print("Print(b)="+ b);
comprobar
No me tomé la molestia de comprobarlo.
En primer lugar, el compilador genera "conversión implícita de 'número' a 'cadena' victorg2.mq5 12 22".
Segundo,
IS 0 victorg2 (EURUSD,M1) 17:46:45 Print(b)=200
PJ 0 victorg2 (EURUSD,M1) 17:46:45 Print(DoubleToString(b,16))=199.999999999716
Utilice la función PrintFormat apropiada para un control total del formato:
La impresión se realiza por defecto en el modo de redondeo normal de doble a 4 dígitos. Corregiremos la documentación.Por favor, indique los punteros (handles) a las estructuras (preferiblemente también a las matrices, incluidas las estáticas).
Envolver en clases suele ser una mala solución:
2012.04.07 20:49:38 SizeOf_Test (USDJPY,M30) sizeof(SEmpty) = 0
Por favor, indique los punteros (handles) a las estructuras (preferiblemente también a los arrays, incluidos los estáticos).
¿En qué sentido y por qué?
1. en qué sentido y
2. ¿por qué?
1.
CEmpty *C[]; // Это работает. SEmpty *S[]; // Error: 'SEmpty' - class type expected SizeOf_Test.mq5 19 1
Para crear matrices de punteros a estructuras (arrays). con la consiguiente inicialización for(i){ S[i] = GetPointer(StaticStruct[i]); }
2. mantener matrices sólidas (empaquetadas) de datos significativos.
Importante cuando se trata de la salida de datos a búferes OpenCL sin procesar (o el envío a DLL, la escritura a archivos, etc.)
Al mismo tiempo, es posible reordenar los accesos a los datos (por ejemplo, al ordenar los punteros) sin reescribir los datos.