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:
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:
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
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 1Para 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.