MoneyJinn: El elemento con índice 0 se borra, mientras que el elemento más reciente de la matriz debe borrarse, es decir, con índice (n-1), donde n es el tamaño de la matriz.
Espera. En primer lugar, has escrito"ArrayResize() error cuando el tamaño del array se reduce cuando ArraySetAsSeries() = true". Es decir, que el elemento más "fresco" tenía un índice de 0. ¿Es esto correcto?
int OnInit() { firstwords.m_next=NULL; firstwords.m_prev=NULL;
el resultado es el mismo
pruébalo tú mismo.
Escriba a servicedesk. Especifique el sistema operativo, la tasa de bits y la construcción del terminal. Por favor, adjunte el código fuente en el que se reproduce el problema de forma continua - nos ocuparemos de ello.
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:
Gracias por sacar el tema, se ha añadido a la ayuda un nuevo ejemplo más completo para la función Imprimir:
Ejemplo:
voidOnStart()
{
//--- выведем DBL_MAX с помощью Print(), это равносильно PrintFormat(%%.16G,DBL_MAX)Print("---- как выглядит DBL_MAX -----");
Print("Print(DBL_MAX)=",DBL_MAX);
//--- теперь выведем число DBL_MAX с помощью PrintFormat()PrintFormat("PrintFormat(%%.16G,DBL_MAX)=%.16G",DBL_MAX);
//--- Вывод в журнал "Эксперты"// Print(DBL_MAX)=1.797693134862316e+308// PrintFormat(%.16G,DBL_MAX)=1.797693134862316E+308//--- посмотрим как выводится тип floatfloat c=(float)M_PI; // нужно явно приводить к целевому типуPrint("c=",c, " Pi=",M_PI, " (float)M_PI=",(float)M_PI);
// c=3.14159 Pi=3.141592653589793 (float)M_PI=3.14159//--- покажем, что может произойти при арифметических операциях над вещественными типамиdouble a=7,b=200;
Print("---- перед арифметическими операциями");
Print("a=",a," b=",b);
Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- разделим a на b (7/200)
a=a/b;
//--- теперь как будто восстановим значение в переменной b
b=7.0/a; // ожидается, что b=7.0/(7.0/200.0)=>7.0/7.0*200.0=200 - но это не так//--- выведем вновь вычисленное значение bPrint("----- после арифметических операций");
Print("Print(b)=",b);
Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- вывод в журнал "Эксперты"// Print(b)=200.0// Print(DoubleToString(b,16))=199.9999999999999716 (видим, что на самом деле b уже не равно 200.0) //--- создадим очень маленькое значение epsilon=1E-013double epsilon=1 e-13;
Print("---- создадим очень маленькое число");
Print("epsilon=",epsilon); // получим epsilon=1E-013//--- теперь вычтем эпсилон из числа b и выведем снова значение в журнал "Эксперты"
b=b-epsilon;
//--- выводим двумя способамиPrint("---- после вычитания epsilon из переменной b");
Print("Print(b)=",b);
Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- вывод в журнал "Эксперты"// Print(b)=199.9999999999999 (теперь значение b после вычитания эпсилон не может округлиться до 200)// Print(DoubleToString(b,16))=199.9999999999998578// (теперь значение b после вычитания эпсилон не может округлиться до 200)
}
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.
curwords = NULL
¿por qué Print("next======",curwords.m_next!=NULL); no arroja un error?
porque
curwords.m_next!=NULL
¿Cero referencias al crear objetos?
No es NULO al crearlo.
Los desarrolladores le han dado la función CheckPointer.
El elemento con índice 0 se borra, mientras que el elemento más reciente de la matriz debe borrarse, es decir, con índice (n-1), donde n es el tamaño de la matriz.
restablecer
int OnInit()
{
firstwords.m_next=NULL; firstwords.m_prev=NULL;
el resultado es el mismo
pruébelo usted mismo
pruébelo usted mismo
por qué debería probarlo :)
a mí me funciona bien :))
Los iconos pueden configurarse y mostrarse según las necesidades.
El terminal escribe en la carpeta de usuario. Especifico la tecla /portable en el acceso directo.
restablecer
int OnInit()
{
firstwords.m_next=NULL; firstwords.m_prev=NULL;
el resultado es el mismo
pruébalo tú mismo.
Escriba a servicedesk. Especifique el sistema operativo, la tasa de bits y la construcción del terminal. Por favor, adjunte el código fuente en el que se reproduce el problema de forma continua - nos ocuparemos de ello.
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:
MP 0 victorg2 (EURUSD,M1) 11:04:42 Print(DoubleToString(b,16))=199.999999999716
Gracias por sacar el tema, se ha añadido a la ayuda un nuevo ejemplo más completo para la función Imprimir:
Ejemplo:
¿Cómo puedo saber el punto para dos monedas?
para el instrumento actual:
digamos para las divisas Símbolo1, Símbolo2?
El tamaño del elemento se puede obtener con SymbolInfoDouble(nombre_de_símbolo, propiedad).
ENUM_SYMBOL_INFO_DOUBLE
Identificador
Descripción
Tipo de propiedad
SYMBOLO_BID
Oferta - mejor oferta de venta
doble
SYMBOL_ASK
Pedir - mejor oferta
doble
SÍMBOLO_ÚLTIMO
Precio al que se ejecutó la última operación
doble
PUNTO_SIMBOLO
Valor de un pip
doble