Redondear números en MT4 mediante NormalizeDouble - página 11

 
Алексей Тарабанов:

Y la tuya está mal, lo siento...

¿Por qué?

void OnStart()
  {
   for(int i=1;i<=9;i++)
     {
      double v1=0.1*i;

      Print("v1 = ",v1," = ",DoubleToString(MathCeil(v1),2));
     }
  }

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.1 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.2 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.3 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.4 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.5 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.6 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.7 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.8 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.9 = 1.00

Su ejemplo:

0.1+0.5=0.6 = 1

0.2+0.5=0.7 = 1

0.3+0.5=0.8 = 1

0.4+0.5=0.9 = 1

0.5+0.5=1.0 = 1

0.6+0.5=1.1 = 1

0.7+0.5=1.2 = 1

0.8+0.5=1.3 = 1

0.9+0.5=1.4 = 1

 
lilita bogachkova:

¿Por qué?

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.1 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.2 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.3 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.4 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.5 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.6 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.7 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.8 = 1.00

0 22:49:08.463 ! tests GBPUSDbc,H1: v1 = 0.9 = 1.00

Su ejemplo:

0.1+0.5=0.6 = 1

0.2+0.5=0.7 = 1

0.3+0.5=0.8 = 1

0.4+0.5=0.9 = 1

0.5+0.5=1.0 = 1

0.6+0.5=1.1 = 1

0.7+0.5=1.2 = 1

0.8+0.5=1.3 = 1

0.9+0.5=1.4 = 1

Porque el enunciado"int A = double B + 0,5" se resuelve: int A = (int)MathCeil(double B); incorrecto.
 
Алексей Тарабанов:
Porque el enunciado"int A = double B + 0,5" se resuelve: int A = (int)MathCeil(double B); incorrecto.
Entonces, ¿cómo se resuelve?
 
lilita bogachkova:
Entonces, ¿cómo se resuelve?
Correcto, es decir, como he dicho. En primer lugar, se añade 0,5 al número fraccionario y, a continuación, se resta la parte fraccionaria del resultado y se redondea el resultado a un número entero.
 
Dmitry Fedoseev:

¿Qué te parece esto?

Entonces 5
 
Алексей Тарабанов:
Correcto, es decir, como he dicho. En primer lugar, se añade 0,5 al número fraccionario y, a continuación, se resta la parte fraccionaria del resultado y se redondea el resultado a un número entero.
¿El código?
 
lilita bogachkova:
Entonces, ¿cómo se resuelve?
No puede explicar. No lo molestes.
 
Vasyl Nosal:
¿El código?
int A = double B + 0,5
 
Алексей Тарабанов:
Correcto, es decir, como he dicho. En primer lugar, se añade 0,5 al número fraccionario, y luego se resta la parte fraccionaria del resultado y se redondea el resultado a un número entero.
Bueno, entonces tienes que escribir a servicedesk, que han inventado tal función extraMathCeil():)
 
Vasyl Nosal:
No puede explicar. No lo molestes.
Vas, no interrumpas la conversación, por favor
Razón de la queja: