MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 107

 
merhaba! MQL'yi nasıl etkili bir şekilde öğrenebilirim? Kolay yollar aramıyorum, sadece çözmek istiyorum Kovalev'in ders kitabını inceliyorum, videolar izliyorum, içinde yazılan kodları tekrar etmeye çalışıyorum. Ama ders kitabındaki kodu tekrarlarken bile o kadar çok hata var ki....... . Bir güncelleme yapıldığını anlıyorum. Bu sitenin bana bu konuda yardımcı olabileceği söylendi, işte buradayım! Ne yapmam gerekiyor?
 
Belki acelem var!
 
Alexey Kozitsyn :
"." sınırlayıcısını kullanarak dizeyi ayrıştırın.

Fena fikir değil...

Alexey Viktorov :
Hiçbir şeyi ayrıştırmanıza gerek yok. Sadece normal bir sayı görmek için dizeye çeviri. Hesaplamak için bir şey yapmanıza gerek yok.

Pekala, karşı konulmaz bir sapıklık arzusu varsa, o zaman dizeyi tekrar bir StringToDouble () sayısına çevirin ve gerekli sayıda karaktere, muhtemelen _Digits'e normalleştirme ile _Point ile çarpın.

İşin aslı şu ki, dizeyi 3 sayıya ayırmanız gerekiyor, onu sayıya dönüştüremezsiniz - dil için çok büyük bir sayı çıkıyor.

İşte böyle bir sayının bir örneği

long CalcY= StringToDouble ( "111111111111111111" );
Print ( "CalcY=" ,CalcY);

111111111111111104 numarasını yazdırır

 
FOTOGRAF14 :
Belki acelem var!
Ama bu gerekli değil! Acele sadece pire yakalarken gereklidir ((c) ordu mizahı).
 
-Aleks- :

İşin aslı şu ki, dizeyi 3 sayıya ayırmanız gerekiyor, onu sayıya dönüştüremezsiniz - dil için çok büyük bir sayı çıkıyor.

İşte böyle bir sayının bir örneği

long CalcY= StringToDouble ( "111111111111111111" );
Print ( "CalcY=" ,CalcY);

111111111111111104 numarasını yazdırır

Peri masalları...
 
Vitalie Postolache :
Peri masalları...

Kendin dene.

long CalcY= StringToDouble ( "111111111111111111" );
Print ( "CalcY=" ,CalcY);

long CalcZ= StringToInteger ( "111111111111111111" );
Print ( "CalcZ=" ,CalcZ);

double Test=CalcZ;
Print ( "Test=" ,Test);

 
-Aleks- :

Kendin dene.

long CalcY= StringToDouble ( "111111111111111111" );
Print ( "CalcY=" ,CalcY);

long CalcZ= StringToInteger ( "111111111111111111" );
Print ( "CalcZ=" ,CalcZ);

double Test=CalcZ;
Print ( "Test=" ,Test);

"Çok büyük bir sayı" dan bahsediyorum, ancak kod da yanlış, biçimden biçime çevirirsek, şöyle:

long CalcY=( long ) StringToInteger ( "111111111111111111" );
Print ( "CalcY=" , IntegerToString (CalcY));

Şikayet ettiğiniz şey çok sayıda değil, metin çıktısında bir aksaklık.

 
Vitalie Postolache :
"çok büyük"ten bahsediyorum
Kesin hesaplamalar için çok büyük bir sayı - aksi takdirde sayının sonundaki hatayı nasıl açıklarsınız?
 
-Aleks- :
Kesin hesaplamalar için çok büyük bir sayı - aksi takdirde sayının sonundaki hatayı nasıl açıklarsınız?
yukarıda eklendi.
 
Vitalie Postolache :
yukarıda eklendi.

Yani böyle bir dönüşümüm var - bir çizgiyi uzun sürebilirsin, ama virgülle hesaplamalar için iki katına ihtiyacım var.