Rundung von Zahlen in MT4 über NormalizeDouble - Seite 12

 
lilita bogachkova:
Dann sollten Sie dem Service Desk schreiben, dass sie eine solche ZusatzfunktionMathCeil() erfunden haben :)
Es ist einfach anders, und es stört mich nicht besonders :)
 
Алексей Тарабанов:
int A = double B + 0,5
Damit hat er recht: "Zuerst wird 0,5 zur Bruchzahl addiert, dann wird derBruchteilabgeschnitten und das Ergebnis auf eine ganze Zahl gerundet", aber MQ hat unsMathCeil() gegeben, um die Mühe zu sparen,undMathCeil()gibt den nächsthöheren ganzzahligen Wert zurück, nicht die Rundung
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:
Also fünf.
Was ist 5? Wenn man eine solche Zahl normalisiert, werden alle 9en zu Nullen, so dass das Normalisieren und anschließende Verwerfen zu falschen Ergebnissen führt.
 
lilita bogachkova:
Damit hat er recht: "Zuerst wird 0,5 zur Bruchzahl addiert, dann wirdder Bruchteilvom Ergebnis abgeschnitten und das Ergebnis auf eine ganze Zahl gerundet", aber MQ hat unsMathCeil() gegeben, so dass wir uns nicht darum kümmern müssen.
Danke, Sunny, aber MathCeil funktioniert nur mit Double: sowohl Input als auch Output :)
 
Алексей Тарабанов:
Danke, Sunny, aber MathCeil funktioniert nur mit Double: sowohl Input als auch Output :)
gelöst: int A = (int)MathCeil(double B);
 
lilita bogachkova:
ist gelöst: int A = (int)MathCeil(double B);
Sorry:int A =(int)MathCeil(double B+0.5)
 
Алексей Тарабанов:
Sorry:int A =(int)MathCeil(double B+0.5)
Nicht a:gelöst: int A =(int)MathCeil(double B);
 
lilita bogachkova:
Nicht a:gelöst: int A =(int)MathCeil(double B);
Versuch: int A = MathCeil(2.6)
 
Алексей Тарабанов:
Versuch: int A = MathCeil(2.4)

int A = MathCeil(2.4)=3

int A = MathCeil(2.4+0.5) =3

sondern

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

sondern

int A = MathCeil(2.6+0.5) =4

Der Teufel ist verwirrt... 2.6, natürlich. Die Zahlen sind seltsam...