NormalizeDouble

L'arrondissement du nombre de la virgule flottante à l'exactitude indiquée.

double  NormalizeDouble(
   double  value,      // nombre normalisé
   int     digits      // nombre de chiffres après le point 
   );

Paramètres

value

[in] La valeur avec la virgule flottante.

digits

[in]  Le format de l'exactitude, le nombre de chiffres après le point décimal (0-8).

La valeur rendue

La valeur du type double avec l'exactitude donnée.

Note

Les valeurs calculées StopLoss, TakeProfit, et ainsi que les valeurs de prix de l'ouverture des ordres remis, doivent être normalisées avec l'exactitude, dont la valeur peut être reçue par la fonction Digits().

Il faut avoir en vue que le nombre normalisé quand l'on déduit au Journal à l'aide de Print () peut contenir plus de signes après la virgule, que vous attendez. Par exemple,

   double a=76.671;             // le nombre normalisé avec 3 signes après la virgule
   Print("Print(76.671)=",a);   // le déduisons comme il est
   Print("DoubleToString(a,8)=",DoubleToString(a,8)); // déduisons avec l'exactitude spécifiée

déduira dans le terminal:

 DoubleToString(a,8)=76.67100000

 Print(76.671)=76.67100000000001

 

Exemple:

   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));
 
//   Résultat:
//   pi= 3.1415926535897931
//   NormalizeDouble(pi,3) = 3.1419999999999999
//   NormalizeDouble(pi,8) = 3.1415926499999998
//   NormalizeDouble(pi,0) = 3.0000000000000000

Voir aussi

DoubleToString, Les types matériels (double, float), La conformation des types