NormalizeDouble kullanarak MT4'te sayıları yuvarlama - sayfa 8

 
Dmitry Fedoseev :

Yanlış.

Çıkarın, iki ondalık basamağa ve ardından bire normalleştirin.

peki dene :)

 
Event :

peki dene :)

Ne denenmeli? Yani açık. Çıkarmanın sonucu normalleştirilmez, yani iki haneye normalleştirmezseniz bazen sürprizler olabilir.
 
Event :

Ve ne gerekli?

dizenin uzunluğunu bilmeniz mi gerekiyor? - dalları karıştırmadın mı?

Kod mu?

Benimki gibi 2'den fazla satır varsa, o zaman sizinki daha zor.

 
Vasyl Nosal :

Kod mu?

Benimki gibi 2'den fazla satır varsa, o zaman sizin için daha zor.

Yazıları dikkatli okumuyorsunuz.

Kodu verdim - bir satırı var.

 
Event :

Yazıları dikkatli okumuyorsunuz.

Kodu verdim - bir satırı var.

Güzel. Yani kodumda 1.15 normalize yazacağım :))))))))))))))))))))))))))))))))))) ))))))))))))))))
 
Vasyl Nosal :

+++

Doğru, sayı 15 ondalık basamaktan uzunsa, yine de bir şekilde kesmeniz gerekir, aksi takdirde düzgün çalışmaz.

 //+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   ushort   Characters_delete= 15 ;
   for ( int i= 0 ;i<=Characters_delete;i++)
     {
       double v1= 1.123456789012345 ;

      v1=DoubleCrop(v1,i,Characters_delete);

       Print ( "v1 = " ,i, " = " , DoubleToString (v1,Characters_delete-i));
     }
   Print ( "---" );
  }
//+------------------------------------------------------------------+
//| Double Crop function                                             |
//+------------------------------------------------------------------+
double DoubleCrop( double value, int ii, ushort   Characters)
  {
   string data= "" ,resoult= "" ;
   data= DoubleToString (value,Characters);
   resoult= StringSubstr (data, 0 , StringLen (data)-ii);
   return StringToDouble (resoult);
  }
//+------------------------------------------------------------------+
 
Event :

peki dene :)

Sıfır ve negatif sayılar yanlıştır. Olumlu, şaşırtıcı bir şekilde, sürpriz yok.
 

Vasyl Nosal :

 extern ushort Characters_delete = 1 ;

///////////////////////////////////////////
string data= DoubleToString ( Bid , Digits );
string  resoult= StringSubstr (data, 0 , StringLen (data)-Characters_delete);  

heh. Bu yanlış bir yoldur. Tamamen yanlış sonuçlar.
 
Dmitry Fedoseev :
Sıfır ve negatif sayılar yanlıştır. Olumlu, şaşırtıcı bir şekilde, sürpriz yok.

Negatif olanlar eklenmelidir (yuvarlama sırasında Normalize modülünde artarsa).

Ve görünüşe göre sıfır ile yapacak bir şey yok.

Bir teklife uygulanırsa, <= 0 olma olasılığı küçüktür... :)

 
Yuvarlama hakkında sekiz sayfa. 4. sınıfta almışlar sanki :(