MQL4 ve MQL5'te Rakamları () atlayarak herhangi bir sayıdan (sadece tırnak işaretleri değil) sonra ondalık basamak sayısını alma - sayfa 9

 
Mesaoria :

Bunun hakkında hiç yazmadım. Bir satıra çift atma fikri, böylece daha sonra satırda karakterleri saymak - bu tam bir oyundur. Ne yaparsan yap.

Ne olmuş? Şimdiye kadar, bu seçenek doğru olduğu garanti edilen en hızlı, en işlevsel olanıdır. Seçenekleriniz neler?

 
Alexandr Sokolov :
Evet, benim versiyonum büyük ihtimalle en iyisi değil ama daha önce bununla ilgili bir şey bulamadığım için kendi başıma en iyi düşündüğüm şey bu, bunu yukarıdaki yorumlarda yazmıştım ama siz teklif etmemişsiniz. kendi versiyonun

Bu seçenekleri karşılaştırdım:

 int ds( double v){
   string s=( string )v;
   int l= StringLen (s);
   int n=l- StringFind (s, "." , 0 )- 1 ;
   if ( StringSubstr (s,l- 1 , 1 )== "0" )n--;
   return (n);
}

int d( double x){
   int n;
   for (n= 0 ;n< 8 ;n++){
       if (x== NormalizeDouble (x,n)){
         return (n);
      }
   }
   return (n- 1 );
}

Dize sürümü biraz daha hızlıdır ve d() işlevi gibi 8 karakterle sınırlı değildir. Doğruluğun garantisi, terminalin sayıyı gösterme şekliyle yapılan hesaplamadır.

Dize dönüştürme seçeneğini seçiyorum.

 
Dmitry Fedoseev :

Ne olmuş? Şimdiye kadar, bu seçenek doğru olduğu garanti edilen en hızlı, en işlevsel olanıdır. Seçenekleriniz neler?

Belirtilen algoritmayı uygulamak için en az bir örnek verebilir misiniz?

 
Mesaoria :

Belirtilen algoritmayı uygulamak için en az bir örnek verebilir misiniz?

Ticaret panelinin metin alanında lot boyutunu doğru sayıda ondalık basamakla görüntülemesi için bir durum vardı. Bu tek durum.

 
Dmitry Fedoseev :

Ticaret panelinin metin alanında lot boyutunu doğru sayıda ondalık basamakla görüntülemesi için bir durum vardı. Bu tek durum.

Onlar. 1 lot olması durumunda "1" ve 0.01 lot - "0.01" görüntüleniyor mu?

 
Mesaoria :

Onlar. 1 lot olması durumunda "1" ve 0.01 lot - "0.01" görüntüleniyor mu?

Kesinlikle bu şekilde değil. Minimum lot ve lot adımına bağlı olarak. Minimum lot 0.01 ise, 1, 1.00 olarak görüntülenir.

 
Dmitry Fedoseev :

Kesinlikle bu şekilde değil. Minimum lot ve lot adımına bağlı olarak. Minimum lot 0.01 ise, 1, 1.00 olarak görüntülenir.

ey

Görünüşe göre işlevinizi kullanmıyorsunuz, ancak yine de DoubleToString (LotSize, <some const value>) gibi bir çıktı veriyorsunuz, değil mi?

 
Mesaoria :

ey

Görünüşe göre işlevinizi kullanmıyorsunuz, ancak yine de DoubleToString(LotSize, <some const value>) gibi bir çıktı veriyorsunuz, değil mi?

Evet. Ancak kaç ondalık basamağın görüntüleneceğini bilmeniz gerekir.

 
Dmitry Fedoseev :

Evet. Ancak kaç ondalık basamağın çıktı alınacağını bilmeniz gerekir.

Onlar. Kullanıcı tarafından girilen minimum lotun (veya lotun adımının) değerine göre, bu değerde ondalık noktadan sonra kaç hane olduğunu belirleyip, sonraki değerleri normalleştirmek için bunu kaydediyor musunuz?

 
Mesaoria :

Onlar. Kullanıcı tarafından girilen minimum parti (veya parti adımı) değerine göre bu değerde ondalık noktadan sonra kaç hane olduğunu belirleyip sonraki değerleri normalleştirmek için bunu kaydediyor musunuz?

Ne net değil? Fiyatta Rakamlar() var, hacim yok. Bu şekilde hesaplanır.

Neden hacim rakamlarına ihtiyacımız var? O zaman neden ve rakamlarla fiyatlar!