Arrondir les nombres dans MT4 via NormalizeDouble - page 5

 
Dmitry Fedoseev:

Voici votre code :

Mettez 3 au lieu de 2 et c'est 0,036.

Ça a marché ! Merci. Je normalise à 3, puis je supprime les chiffres supplémentaires après la virgule.

Pouvez-vous me dire s'il existe une fonction standard pour couper les chiffres H après la virgule ? Comme StringSubStr, mais seulement si c'est un nombre fractionnaire.

 
Roman Starinskij:

C'est comme ça que ça marche ! Merci. Je normalise à 3 chiffres et je coupe ensuite les chiffres supplémentaires après la virgule.

Pouvez-vous me dire s'il existe une fonction standard pour couper les chiffres H après le point décimal ? Comme StringSubStr, mais seulement si c'est un nombre fractionnaire.

Si vous souhaitez couper les chiffres lors de leur affichage à l'écran (journal), il existe DoubleToString() pour cela.
 
Ihor Herasko:
Si vous parlez de couper les chiffres lors de la sortie à l'écran (journal), alors DoubleToString() est là pour ça.

Non. DoubleToString fonctionne exactement comme NormalizeDouble().

 
Roman Starinskij:

C'est comme ça que ça marche ! Merci. Je normalise à 3 chiffres et je coupe ensuite les chiffres supplémentaires après la virgule.

Pouvez-vous me dire s'il existe une fonction standard pour couper les chiffres H après le point décimal ? Comme StringSubStr, mais seulement si c'est un nombre fractionnaire.

Cette fonction n'existe pas, car elle n'est pas nécessaire. Votre calculatrice est fausse.
 
Roman Starinskij:

Pouvez-vous me dire s'il existe une fonction standard pour tronquer les chiffres H après la virgule ? Comme StringSubStr, mais seulement si c'est un nombre fractionnaire.

J'en utilise un, mais il est "non standard" :

//+------------------------------------------------------------------+
//| Double Crop function                                             |
//+------------------------------------------------------------------+
double DoubleCrop(double value,int crop)
  {
   string ValueToString="";
   ValueToString=DoubleToString(value,crop);
   return StringToDouble(ValueToString);
  }
//+------------------------------------------------------------------+
 
lilita bogachkova:

J'en utilise un, mais il est "personnalisé" :

Quel est le coup de génie ?

string ValueToString="";
   ValueToString=DoubleToString(value,crop);
 
lilita bogachkova:

J'en utilise un, mais il est "hors de la boîte" :

Je viens d'écrire, DoubleToString ne coupe pas, il fonctionne de la même manière que NormalizeDouble - il arrondit. Nah... on est sur un bulldozer.
 

Une anomalie est détectée :

   Alert(
         DoubleToStr(1.15,1)+" "+
         DoubleToStr(1.25,1)+" "+
         DoubleToStr(1.35,1)+" "+
         DoubleToStr(1.45,1)
         );

Résultat : 1.1 1.3 1.4 1.5

Avec 1,15, il y a eu un rejet et avec les numéros en acier, il y a eu un arrondi.

 
Dmitry Fedoseev:

Une anomalie est détectée :

Résultat : 1.1 1.3 1.4 1.5

Avec 1,15, il y a eu un rejet et avec les numéros en acier, il y a eu un arrondi.

Oui, j'avoue l'avoir utilisé sans vérifier le résultat :((((
 

Jusqu'à ce que les développeurs retirent

il

StringLen

Le nombre de caractères de la chaîne, sans compter le zéro de fin de chaîne.

il n'y a rien que vous puissiez faire à propos de la troncature.