NormalizeDouble

Arredonda um número de ponto flutuante para uma precisão especificada.

double  NormalizeDouble(
   double  value,      // número normalizado
   int     digits      // número de dígitos depois do ponto decimal
   );

Parâmetros

value

[in] Valor com um ponto flutuante.

digits

[in]  Formato de precisão, número de dígitos depois do ponto (0-8).

Valor do Retorno

Valor de tipo double com precisão predefinida.

Observação

Valores calculados de StopLoss, TakeProfit, e valores de preços de abertura para ordens pendentes devem ser normalizados com a precisão obtida através de Digits().

Favor notar que ao imprimir no Diário usando a função Print(), um número normalizado pode conter um número maior de posições decimais do que o esperado. Por exemplo, para:

   double a=76.671;             // Um número normalizado com três posições decimais
   Print("Print(76.671)=",a);   // Imprime como é
   Print("DoubleToString(a,8)=",DoubleToString(a,8)); // Imprime com um precisão predefinida

você terá o seguinte no terminal:

 DoubleToString(a,8)=76.67100000

 Print(76.671)=76.67100000000001

 

Exemplo:

   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
*/

Também Veja

DoubleToString, Tipos reais (double, float), Conversão de Tipo (Typecasting)