NormalizeDouble

Runden der Zahl mit dem Fliesspunkt bis zur angegebenen Genauigkeit.

double  NormalizeDouble(
   double  value,      // normalisierte Zahl
   int     digits      // Anzahl der Dezimalzeichen
   );

Parameter

value

[in] Wert mit dem Fliesspunkt.

digits

[in]  Format der Genauigkeit, Anzahl der Dezimalzeichen (0-8).

Rückgabewert

Wert des Typs double mit der vorgegebenen Genauigkeit.

Hinweis

Berechnete Werte von StopLoss, TakeProfit, und Werte des Eüöffnungspreises der Warteordern, müssen normalisiert werden mit der Genauigkeit, deren Wert durch die Funktion Digits() erhalten werden kann.

Bitte beachten Sie, dass bei der Ausgabe einer normalisierten Zahl ins Journal mit Funktion Print(), kann sie eine größere Anzahl von Nachkommastellen als Sie erwarten, enthalten. Zum Beispiel für:

   double a=76.671;             // Normalisierte Zahl mit 3 Nachkommastellen
   Print("Print(76.671)=",a);   // Wir geben es, wie es ist, aus
   Print("DoubleToString(a,8)=",DoubleToString(a,8)); // Wir geben es mit einer vorgegebenen Genauigkeit aus

erhalten sie das folgende im Terminal:

 DoubleToString(a,8)=76.67100000

 Print(76.671)=76.67100000000001

 

Beispiel:

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

Sehen Sie auch

DoubleToString, Realtypen (double, float), Typenreduzierung