Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 144
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
NaN için ayrıca kontrol etmeniz gerekir
Bu normal bir numara. Kontrol basittir - neye böldüğünüz, ardından sıfır olup olmadığını kontrol edin.
Bu normal bir numara. Kontrol basittir - neye böldüğünüz, ardından sıfır olup olmadığını kontrol edin.
ancak bu kodda null olup olmadığını kontrol etmezsiniz:
ifade Sayı ? MQL'de, çift 8 baytta 0x00000000 00000000 değeri yoksa bu doğru olacaktır.
başka bir durumda bu ifade ( Num ? ) doğru olacaktır
Ayın başında MQL'de bool kontrolü oluşturmama hakkında bir tartışma başlattım - cevap şu ki, veri kaybı yok, bu yüzden gerekli değil - bu aynı problem, ifadeyi NaN'ye bölmeyi deneyebilirsiniz - çift bayt boş olmayacak mı?
Şu anda test edemiyorum, ancak şuna benziyor:
ancak bu kodda null olup olmadığını kontrol etmezsiniz:
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri
fxsaber , 2019.10.28 11:42
Şu anda test edemiyorum, ancak şuna benziyor:
Çalışmayacak. Kilitlenme örneğinde, Num normal bir sayıdır. bool iş dışı.
Çalışmayacak. Kilitlenme örneğinde, Num normal bir sayıdır. bool iş dışı.
kontrol edilen NaN araması
gerçekten MQL5'te çalışıyor, döngüyü sıfırdan başlatabilirsiniz, daha uzun süre beklemeniz gerekecek
burada, genel olarak, sorunuz çift doğrulukla ilgili bir sorudur - genellikle belirli bir işlemci türüne bağlıdır, bu nedenle yukarıda hatanın yeniden oluşturulmadığına dair yorumlar vardı
UPD:
şu şekilde sonuçlandırmak daha iyidir:
burada, genel olarak, sorunuz çift doğrulukla ilgili bir sorudur - genellikle belirli bir işlemci türüne bağlıdır, bu nedenle yukarıda hatanın yeniden oluşturulmadığına dair yorumlar vardı
Herhangi birinde tekrarlanabilir. Dürüst olmak gerekirse, bu konu hakkında neden bu kadar çok konuşma yapıldığını anlamıyorum. Sıfır olmayan iki sayıyı çarparak sıfır elde ettik. Sihir yok.
Herkes bu kodu anlıyor mu?
d sıfır olduğunda kesinlikle benzer bir durum vardır.
Sihir yok.
işte sihir, şu şekilde basılmıştır:
2019.10.28 16:25:28.643 tst1 (EURUSD,H4) ULongDouble.d != ULongDouble.d doğru
2019.10.28 16:25:28.643 tst1 (EURUSD,H4) b_değeri = doğru
2019.10.28 16:25:28.643 tst1 (EURUSD,H4) d_değeri = nan
2019.10.28 16:25:28.667 tst1 (EURUSD,H4) 'tst1.mq5' içinde sıfır bölme (28,31)
d sıfır olduğunda kesinlikle benzer bir durum vardır.
Sıfırdan bahsetmiyorum, örneğinizde 0.1 * Num ? bu bool - o zaman 8 çift baytta en az bir bit olması aptalca
0.1 * Num double olduğunda , hassasiyet kaybı durumunda Nan'a uçabilir ve sıfır bölme elde edebilirsiniz.
DBL_MIN, minimum pozitif çift değil.
DBL_MIN, minimum pozitif çift değil.
İkinci sayının geçersiz bir çift biçimi olduğunu düşünüyorum, ancak hem baskıda hem de işlemlerde hala doğrulanıyor. belki de bu yüzden dağılıyor.
İşte bunu anlamadım.
DBL_MIN, minimum pozitif çift değil.
DBL_MIN ile NaN'yi iyi karşılaştırın - sonuç bool olacak mı?
ve 1.0'ı sayı olmayan bir sayıya bölersek, yukarıda belirtildiği gibi bir istisna elde ederiz.
genel olarak, geliştiricilerin birçok kez yazdıkları, daha fazla/daha az/eşit ile iki katına karşılaştırmanın doğru olmadığı - bu doğrudur, bazen sayı olmayan bir sayıya basabilirsiniz ve karşılaştırmanın sonucu tahmin edilemez olacaktır.