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

 
lilita bogachkova :
Peki, o zaman servis masasına böyle bir ekstra fonksiyon MathCeil () ile geldiklerini yazmanız gerekiyor :)
Sadece farklı ve beni çok fazla rahatsız etmiyor :)
 
Алексей Тарабанов :
int A = çift B + 0,5
Şu konuda haklı: "Önce, kesirli sayıya 0,5 eklenir ve daha sonra kesirli kısım sonuçtan kesilir ve bir tam sayıya yuvarlamanın sonucu kalır . " yuvarlanmaz.
 void OnStart ()
  {
   ushort   Characters_delete= 14 ;
   for ( int i= 0 ;i<=Characters_delete;i++)
     {
       double v1=i+ 0.999999999999999 ;

       int v2=v1+ 0.5 ;
       Print ( "v1 = " ,i, " = " , DoubleToString (v2, 2 ));
     }
  }
 
Vasyl Nosal :
sonra 5
5 nedir? Böyle bir sayıyı normalleştirirken, tüm 9'lar sıfıra dönüşür, bu nedenle normalleştirme ve ardından atma yanlış sonuçlar verir.
 
lilita bogachkova :
"Önce kesirli sayıya 0,5 eklenir ve sonra kesirli kısım sonuçtan kesilir ve bir tamsayıya yuvarlamanın sonucu kalır." konusunda haklıdır, ancak MQ bize MathCeil() 'i vermemek için verdi. zahmet.
Teşekkürler Sunny, ancak MathCeil yalnızca çiftlerle çalışır: hem girişte hem de çıkışta :)
 
Алексей Тарабанов :
Teşekkürler Sunny, ancak MathCeil yalnızca çiftlerle çalışır: hem girişte hem de çıkışta :)
çözüldü: int A = (int) MathCeil (çift B);
 
lilita bogachkova :
çözüldü: int A = (int) MathCeil(çift B);
Üzgünüz: int A = (int) MathCeil (çift B +0.5 )
 
Алексей Тарабанов :
Üzgünüz: int A = (int) MathCeil(double B +0.5 )
Değil a: çözüldü: int A = (int) MathCeil (çift B);
 
lilita bogachkova :
Değil a: çözüldü: int A = (int) MathCeil(çift B);
deneyin: int A = MathCeil (2.6)
 
Алексей Тарабанов :
deneyin: int A = MathCeil(2.4)

int A = MathCeil (2.4)=3

int A = MathCeil(2.4+0.5) =3

ancak

int A = MathCeil(2.6+0.5) =4

int A = MathCeil(2.6) =3

 
lilita bogachkova :

int A = MathCeil(2.4)=3

int A = MathCeil(2.4+0.5) =3

ancak

int A = MathCeil(2.6+0.5) =4

Şeytan kandırdı ... 2.6, elbette. Rakamlar tuhaf...