tünaydın!
Yardımın bu bölümünü ne kadar okursam okuyayım, her şeyi anlayamıyorum - peki, bu kesirli olan NEREDEN geliyor ???
Print() ile Journal'a yazdırıldığında normalleştirilmiş bir sayının beklediğinizden daha fazla ondalık basamak içerebileceğini unutmayın. Örneğin,
çift a=76.671; // 3 ondalık basamaklı normalleştirilmiş sayı
Print( "Yazdır(76.671)=" ,a); // olduğu gibi göster
Print( "DoubleToString(a,8)=" ,DoubleToString(a,8)); // verilen hassasiyette çıktıterminalde verir:
DoubleToString(a,8)=76.67100000
Yazdır(76.671)=76.67100000000001
Çift tip, hassasiyette hatalara yol açabilecek sınırlamalara sahiptir.
Bu makaleyi tavsiye ederim: https://www.mql5.com/en/articles/1561
- 2009.11.02
- MetaQuotes Software Corp.
- www.mql5.com
Çift tipin hassasiyette sınırlamaları vardır ve bu da hatalara yol açabilir.
Bu makaleyi tavsiye ederim: https://www.mql5.com/en/articles/1561
tavsiye açık, teşekkürler
çıktı alırken DoubleToStr kullanabilirsiniz
ama bunun nereden geldiği belli değil!
bölme / çarpma yaptıysam, tamam, açıkça hata
ama sabit olarak? hangisini kendim yazdım
başlangıçta bu kesinliğe sahip olmayan bir sabit için yuvarlama kullanmam gerektiği ortaya çıktı
ve en önemlisi, double değişkende gerçekten saklanan şeyin güvenilirliği sarsılır!
Belgelerden alıntı
Необходимо помнить, что вещественные числа хранятся в памяти компьютера с некоторой ограниченной точностью в двоичной системе счисления, в то время как общепринятой в использовании является десятичная система счисления. Поэтому многие числа, которые точно записываются в десятичной системе, в двоичной системе можно записать только в виде бесконечной дроби.
Örneğin, 0.3 ve 0.7 sayıları bilgisayarda sonsuz kesirler olarak temsil edilirken, 0.25 sayısı tam olarak ikinin üssü olduğu gibi saklanır.
ilginç...
Zaten buradaki noktanın MQL'de değil, 80'lerin standartları düzeyinde daha derin bir yerde olduğunu tahmin ediyorum.
ama yine de çok garip...
Bunu herhangi bir uygulamalı dilde görmedim
MQL dilinin kendi düzeyinde bazı geçici çözümlere sahip olmak makul olacaktır.
ve yine de bu, 0000000001 kuyruklarının aşağıdaki kodda neden verildiğini açıklamıyor
current=NormalizeDouble(GlobalVariableGet("Equity-"+portfolio_id),2);
text = "Positions closed at " + (string)current + " for portfolio: " + portfolio_name;
if(!automatic) MessageBox(text,""); else Print(text);
çünkü normalleştirme yaptım
ama sayının hala bir kuyruğu var
ilginç...
Zaten buradaki noktanın MQL'de değil, 80'lerin standartları düzeyinde daha derin bir yerde olduğunu tahmin ediyorum.
ama yine de çok garip...
Bunu herhangi bir uygulamalı dilde görmedim
MQL dilinin kendi düzeyinde bazı geçici çözümlere sahip olmak makul olacaktır.
Bunda bu kadar zor olan ne?
4 haneye kadar doğruluğa ihtiyacınız varsa. Sayıyı 10.000 ile çarpın, kesirli kısmı atın ve 10.000'e bölün.
mql'nin matematiksel işlevleri belgelerde bulunabilir.
text = "Portföy için " + (string)geçerli + " konumunda kapatılan pozisyonlar: " + portföy_adı;
burada şu an için DoubleTo String yapmanız gerekiyor ve her şey yoluna girecek
evet, yuvarlamayı zorlamak gerektiğini zaten anladım
NormalizeDouble göreve uygun görünmüyor
evet, yuvarlamayı zorlamanın gerekli olduğunu zaten anladım
NormalizeDouble göreve uygun görünmüyor
NormalizeDouble tam olarak böyle çalışır (ve ilk MQL'den beri her zaman böyle çalışır)
Sayı 10 ile basamakların kuvvetiyle çarpılır, tamsayı biçimine dönüştürülür ( kesirli kısım atılır) ve sonra 10 ile basamakların kuvvetine bölünür.
Sorun ne? Şablon molası mı?
NormalizeDouble tam olarak böyle çalışır (ve ilk MQL'den beri her zaman böyle çalışır)
Sayı 10 ile basamakların kuvvetiyle çarpılır, tamsayı biçimine dönüştürülür ( kesirli kısım atılır) ve sonra 10 ile basamakların kuvvetine bölünür.
Sorun ne? Şablon molası mı?
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
tünaydın!
Yardımın bu bölümünü ne kadar okursam okuyayım, her şeyi anlayamıyorum - peki, bu kesirli olan NEREDEN geliyor ???