NormalizeDouble

Redondeo del número con punto flotante hasta una precisión especificada.

double  NormalizeDouble(
   double  value,      // número normalizado
   int     digits      // cantidad de símbolos después del punto decimal
   );

Parámetros

value

[in] Valor con punto flotante.

digits

[in]  Formato de precisión, número de dígitos después del punto decimal (0-8).

Valor devuelto

Valor del tipo double con una precisión especificada.

Nota

Valores calculados StopLoss, TakeProfit y los valores de precio de apertura de pedidos pendientes tienen que ser normalizados con la precisión cuyo valor puede ser obtenido por la función Digits().

Hay que tener en cuenta que cuando un número normalizado se visualiza en el Diario mediante Print(), éste puede tener una cantidad de dígitos tras la coma más grande de lo esperado. Por ejemplo,

   double a=76.671;             // número normalizado con 3 dígitos tras la coma
   Print("Print(76.671)=",a);   // vamos a mostrarlo tal como es
   Print("DoubleToString(a,8)=",DoubleToString(a,8)); // vamos a mostrarlo con una precisión definida

mostrará en el terminal:

 DoubleToString(a,8)=76.67100000

 Print(76.671)=76.67100000000001

 

Ejemplo:

   double pi=M_PI;
   Print("pi = ",DoubleToString(pi,16));
      
   double pi_3=NormalizeDouble(M_PI,3);
   Print("NormalizeDouble(pi,3) = ",DoubleToString(pi_3,16))
   ;
   double pi_8=NormalizeDouble(M_PI,8);
   Print("NormalizeDouble(pi,8) = ",DoubleToString(pi_8,16));
   
   double pi_0=NormalizeDouble(M_PI,0);
   Print("NormalizeDouble(pi,0) = ",DoubleToString(pi_0,16));
/*
   Resultado:
   pi= 3.1415926535897931
   NormalizeDouble(pi,3)= 3.1419999999999999
   NormalizeDouble(pi,8)= 3.1415926499999998
   NormalizeDouble(pi,0)= 3.0000000000000000
*/

Véase también

DoubleToString, Tipos reales (double, float), Conversión de tipos