Arrotondamento dei numeri in MT4 tramite NormalizeDouble - pagina 12

 
lilita bogachkova:
Allora dovreste scrivere al Service Desk che hanno inventato una tale funzione extraMathCeil():)
È solo diverso, e non mi dà molto fastidio :)
 
Алексей Тарабанов:
int A = doppio B + 0,5
Ha ragione: "Prima si aggiunge 0,5 al numero frazionario e poi si taglia laparte frazionaria e si arrotonda il risultato all'intero", ma MQ ci ha datoMathCeil() per risparmiare la fatica,eMathCeil()restituisce il prossimo valore intero più alto , non arrotonda
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:
Cinque, allora.
Cos'è il 5? Normalizzare un tale numero trasforma tutti i 9 in zeri, quindi normalizzare e poi scartare darà risultati sbagliati.
 
lilita bogachkova:
Ha ragione:"Prima si aggiunge 0,5 al numero frazionario e poi laparte frazionariaviene tagliata dal risultato e il risultato viene arrotondato all'intero", ma MQ ci ha datoMathCeil() per non preoccuparcene.
Grazie, Sunny, ma MathCeil funziona solo con il doppio: sia in entrata che in uscita :)
 
Алексей Тарабанов:
Grazie, Sunny, ma MathCeil funziona solo con il doppio: sia in entrata che in uscita :)
risolto: int A = (int)MathCeil(double B);
 
lilita bogachkova:
è risolto: int A = (int)MathCeil(double B);
Scusa:int A =(int)MathCeil(double B+0.5)
 
Алексей Тарабанов:
Scusa:int A =(int)MathCeil(double B+0.5)
Non a:risolto: int A =(int)MathCeil(double B);
 
lilita bogachkova:
Non a:risolto: int A =(int)MathCeil(double B);
prova: int A = MathCeil(2.6)
 
Алексей Тарабанов:
prova: int A = MathCeil(2.4)

int A = MathCeil(2.4)=3

int A = MathCeil(2.4+0.5) =3

ma

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

ma

int A = MathCeil(2.6+0.5) =4

Il diavolo è confuso... 2.6, naturalmente. I numeri sono strani...