Arrondir les nombres dans MT4 via NormalizeDouble - page 8

 
Dmitry Fedoseev:

Bien et mal.

Soustraire, normaliser à deux chiffres, puis à un.

Essayez-le donc :)

 
Event:

Alors essayez-le :)

Qu'y a-t-il à essayer ? C'est assez clair. Le résultat de la soustraction n'est pas normalisé, il y aura donc parfois des surprises si vous ne normalisez pas à deux chiffres.
 
Event:

Lequel vous faut-il ?

vous avez besoin de connaîtrela longueur de la corde? - Êtes-vous sûr d'avoir les bonnes branches ?

Un code ?

Si c'est plus de 2 lignes comme le mien, alors votre code est plus compliqué.

 
Vasyl Nosal:

Un code ?

Si c'est plus de 2 lignes comme le mien, alors votre code est plus compliqué.

Vous ne lisez pas attentivement vos messages.

Je vous ai donné le code - il y a une ligne.

 
Event:

Vous ne lisez pas attentivement les messages.

Je t'ai donné le code - il y a une ligne dedans.

C'est cool. Je vais écrire 1.15 normalise dans mon code comme ça : ))))))))))))))))))))))))))))))))))))))))))))))))))).
 
Vasyl Nosal:

+++

Toutefois, si un nombre est supérieur à 15 décimales, il doit être tronqué d'une manière ou d'une autre, sinon il ne fonctionnera pas correctement.

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   ushort  Characters_delete=15;
   for(int i=0;i<=Characters_delete;i++)
     {
      double v1=1.123456789012345;

      v1=DoubleCrop(v1,i,Characters_delete);

      Print("v1 = ",i," = ",DoubleToString(v1,Characters_delete-i));
     }
   Print("---");
  }
//+------------------------------------------------------------------+
//| Double Crop function                                             |
//+------------------------------------------------------------------+
double DoubleCrop(double value,int ii,ushort  Characters)
  {
   string data="",resoult="";
   data=DoubleToString(value,Characters);
   resoult=StringSubstr(data,0,StringLen(data)-ii);
   return StringToDouble(resoult);
  }
//+------------------------------------------------------------------+
 
Event:

Alors essayez-le :)

Avec zéro et avec des nombres négatifs, c'est faux. Avec des positifs, étonnamment, sans aucune surprise, correct.
 

Vasyl Nosal:

extern ushort Characters_delete = 1;

///////////////////////////////////////////
string data=DoubleToString(Bid,Digits);
string resoult=StringSubstr(data,0,StringLen(data)-Characters_delete);  

Heh. C'est le mauvais sens. Résultats totalement faux.
 
Dmitry Fedoseev:
C'est faux avec le zéro et les nombres négatifs. Avec des positifs, étonnamment, sans surprises, c'est correct.

Les valeurs négatives doivent être ajoutées (si Normalize augmente le modulo lors de l'arrondi).

Et probablement ne rien faire avec zéro.

Si elle est appliquée à une citation - sa probabilité de devenir <= 0 est faible... :)

 
Huit pages sur les arrondis. Je crois que c'est ce qui était enseigné en quatrième année.
Raison: