İşte hem 4'ü hem de 5'i sürmesi gerektiği ilkesine sahip bir senaryo
struct DoubleContainer
{
doublevalue ;
};
struct LongContainer
{
longvalue ;
};
long ToLong( doublevalue )
{
DoubleContainer d; d. value = value ;
LongContainer l = (LongContainer)d;
return l. value ;
}
double ToDouble( longvalue )
{
LongContainer l; l. value = value ;
DoubleContainer d = (DoubleContainer)l;
return d. value ;
}
void OnStart()
{
long l = 130462919691841406 ;
double d1 = ( double )l;
long l1 = ( long )d1;
double d2 = ToDouble(l);
long l2 = ToLong(d2);
}
İşte hem 4'ü hem de 5'i sürmesi gerektiği ilkesine sahip bir senaryo
Genel olarak teneke bir şey ...
#property strict//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart ()
{
//---long l = 130462919691841406 ;
//--- приведение типовdouble d1 = ( double )l;
long l1 = ( long )d1;
//--- преобразование типовdouble d2 = ToDouble(l);
long l2 = ToLong(d2);
//--- поглядим чё натворилиPrint ( "long-значение l = " + IntegerToString (l));
Print ( "long l привели к типу double d1 = " + DoubleToString (d1, Digits ));
Print ( "double d1 привели к типу long l1 = " + IntegerToString (l1));
Print ( "long l преобразовали в double d2 = " + DoubleToString (d2, Digits ));
Print ( "double d2 преобразовали в long l2 = " + IntegerToString (l2));
ToDoubleString(l);
}
//+------------------------------------------------------------------+struct DoubleContainer
{
double value;
};
//+------------------------------------------------------------------+struct LongContainer
{
long value;
};
//+------------------------------------------------------------------+long ToLong( double value)
{
DoubleContainer d; d.value = value;
LongContainer l = (LongContainer)d;
return l.value;
}
//+------------------------------------------------------------------+double ToDouble( long value)
{
LongContainer l; l.value = value;
DoubleContainer d = (DoubleContainer)l;
return d.value;
}
//+------------------------------------------------------------------+double ToDoubleString( long long_value) {
string long_value_str= IntegerToString (long_value);
double double_value=StrToDouble(long_value_str);
Print ( "long_value = " + IntegerToString (long_value)+ ", double_value = " + DoubleToString (double_value, Digits ));
return double_value;
}
//+------------------------------------------------------------------+
double'a dönüştürülen long sıfır olarak görüntülenir. Her ne kadar o zaman bu çift sıfırdan normal olarak uzuna dönüştürülür. Hiç birşey anlamıyorum...
TheXpert : Ve bir hata ayıklayıcıya bakmak için? Sıfır olmayan çok küçük bir değer var. Hala pulluklar, başka ne gerekiyor?
Bak. Pencere kimliğini (uzun) glob'a gönderiyorum. terminal (çift kişiliktir). Kontrol uzmanının çizelgesinin id değerini okumak ve verilerini bu çizelgeye göndermek için farklı, herhangi bir çizelge (EA onları ayarlayacaktır) üzerine ayarlanmış birçok göstergeye ihtiyacım var. EA, sırayla, tüm bu verileri işleyecek ve onlarla birlikte çalışacaktır. Global terminalde sıfırın yazıldığını görünce, göstergenin istenen grafiğin tam olarak gerekli tanımlayıcısını alacağından ve verilerini oraya göndereceğinden pek emin değilim. sıfır görüyorum. Ve bu, EA'nın çalıştığı grafiğin kimliğiyle eşleşmiyor. Emin olmam gerek. Verileri normal şekilde dönüştüremezseniz , csv dosyasını kullanmanız gerekecektir. Yine de veri dönüştürme sorununu kayıpsız çözmek istiyorum. Ve sonra bir kayıp değil, gerçek değere 2 eklenmesi var.
Onu dizgeye dönüştürmeye çalıştım - aynı saçmalık - uzun 130462919691841406'nın gönderilen değerini 2 ile artırıyor:
Transferden önce longdan double koymanız gerekiyor. Genel bir değişken için . Sıfır değeri değil, sadece buldozerden alınan bir çift sayı, örneğin 1.34 * e-307 olabilir, 4.29 * e + 120 olabilir, çünkü uzun bitler var.
belki, ama doğru bir şekilde iletilmiş gibi görünüyor. Global Değişkenler penceresinde, değer 17 hane gösterecek şekilde yuvarlanır.
Kurtarmaya Unioncast. Yapılar aracılığıyla bile mql5'te yasaldır.
MQL4. Ne tasvir edilebilir?
Yeni MQL4, MQL5'e getirilmedi mi?
MQL4. Ne tasvir edilebilir?
Şimdi bakalım...
İşte hem 4'ü hem de 5'i sürmesi gerektiği ilkesine sahip bir senaryo
Tam olarak değil. Yardıma bakılırsa, pratikte aynı şey. Ama yargılamayacağız. Sonuçla ilgileniyoruz
Şimdi bakalım...
İşte hem 4'ü hem de 5'i sürmesi gerektiği ilkesine sahip bir senaryo
Genel olarak teneke bir şey ...
double'a dönüştürülen long sıfır olarak görüntülenir. Her ne kadar o zaman bu çift sıfırdan normal olarak uzuna dönüştürülür. Hiç birşey anlamıyorum...
Ne... ????????????
Ve bir hata ayıklayıcıya bakmak için? Sıfır olmayan çok küçük bir değer var. Hala pulluklar, başka ne gerekiyor?
Bak. Pencere kimliğini (uzun) glob'a gönderiyorum. terminal (çift kişiliktir). Kontrol uzmanının çizelgesinin id değerini okumak ve verilerini bu çizelgeye göndermek için farklı, herhangi bir çizelge (EA onları ayarlayacaktır) üzerine ayarlanmış birçok göstergeye ihtiyacım var. EA, sırayla, tüm bu verileri işleyecek ve onlarla birlikte çalışacaktır. Global terminalde sıfırın yazıldığını görünce, göstergenin istenen grafiğin tam olarak gerekli tanımlayıcısını alacağından ve verilerini oraya göndereceğinden pek emin değilim. sıfır görüyorum. Ve bu, EA'nın çalıştığı grafiğin kimliğiyle eşleşmiyor. Emin olmam gerek.
Verileri normal şekilde dönüştüremezseniz , csv dosyasını kullanmanız gerekecektir. Yine de veri dönüştürme sorununu kayıpsız çözmek istiyorum. Ve sonra bir kayıp değil, gerçek değere 2 eklenmesi var.
Onu dizgeye dönüştürmeye çalıştım - aynı saçmalık - uzun 130462919691841406'nın gönderilen değerini 2 ile artırıyor:
sonuç:
Anlamıyorum...
Ta emae...
Transferden önce longdan double koymanız gerekiyor. Genel bir değişken için . Sıfır değeri değil, sadece buldozerden alınan bir çift sayı, örneğin 1.34 * e-307 olabilir, 4.29 * e + 120 olabilir, çünkü uzun bitler var.
Aktarımdan sonra, paketi çiftten uzuna çıkarın.
Herşey.