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 4

 
void OnStart ()
{
         double price =   500000000.0001 ;
         Print ( price, ":" , d( price ));
}

Sonuç: 50000000.0001: 4

4 ama 8 değil

 
Pekala, tamam... İstersen bu neşeyle yıkan.
 
A100 :

tahmin . Ve kaç ondalık basamak var? sekiz?

Test edilmem gerekmiyor.

   Print ( NormalizeDouble ( 1234567890 + 1 e- 7 , 8 ) == 1234567890 ); // true
   Print ( 1234567890 + 1 e- 7 == 1234567890 ); // true
 
fxsaber :

Test edilmem gerekmiyor.

Yine de, kodunuzu düzelttiniz - bu, kontrolün faydalı olduğu anlamına gelir

 
Yazdır ( 12345+1e-7)
 

Kodun nereden alındığını görün. Ve hangi pratik amaçlar için tasarlandı. Net değilse - fiyatlar için.

Kodda kusursuzluk yoktu. böyle bir kullanıcı tarafından kullanılması amaçlanmamıştır.

Tartışma sırasında, herkese açık olarak yayınlarsanız aptal korumasının ayarlanması gerektiği ortaya çıktı. Aksi takdirde sracha 5 sayfa.

Yani, gerçekten, düzeltildi. Bir kez daha, sonsuz basamaklı sayılar normdur.

 
Dmitry Fedoseev :

NormalizeDouble'ın nasıl çalıştığını biliyorum, çünkü tam analogunu yeniden üretti.

Her şey, hangi Rakamları almanız gerektiğine bağlıdır. Temsil çift ise, kodunuz farklı bir değer üretir. Rakamlar sayısal bir sabitse, doğrudur (ve o zaman bile, her zaman değil).

 
Pekala, burada yine pipetlerle ölçülüyorlar ...
 
fxsaber :

Her şey, hangi Rakamları almanız gerektiğine bağlıdır.

Böyle ihtiyaç

 int f( double );

için (özellikle)

 void OnStart ()
{
         Print ( f( NormalizeDouble ( 500000000.0001 , 4 )));
}

sonuç şuydu: 4

 
A100 :

Böyle ihtiyaç

ile

sonuç şuydu: 4

Belki de tam olarak ihtiyacınız olan şey budur. TS yanıtladı

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

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

Alexander Sokolov , 2018.11.03 17:39

Ondalık noktadan sonra ondalık basamak sayısını almak gerektiğinde sadece nadir bir durumla karşılaşmadığımı düşünüyorum.