Obtenir le nombre de décimales de n'importe quel nombre (pas seulement les guillemets) en contournant Digits() dans MQL4 et MQL5 - page 2

 
fxsaber:

Oui, huit.

Pourquoi alors.

void OnStart()
{
        double price = 500000000.0001;
        Print( price, ":", Digits_values( price ));
}

Digits_values renvoie 4 ?

Résultat : 500000000.0001:4

 

Combien de chiffres y a-t-il après la virgule ?

void OnStart()
{
        double price = 5000000000.0001;
        Print( price, ":", GetDigits( price ));
}

Apparemment, il y en a tellement que l'ordinateur ne peut même pas compter.

Résultat : ? ???

 
A100:

Pourquoi alors

Digits_values renvoie 4 ?

Résultat : 500000000.0001:4

Étudiez la conversion des chaînes de caractères.

 
A100:

Combien de chiffres y a-t-il après la virgule ?

Apparemment, il y en a tellement que l'ordinateur ne peut même pas compter.

Résultat : ? ???

Oui, comme un tiers.

 
A100:

Une bonne solution fonctionne généralement correctement

Je n'ai peut-être pas tout vérifié, mais lorsque je l'ai testé deux fois sur MQL4, les valeurs de sortie étaient correctes

 
fxsaber:

Étudiez le casting pour la ficelle.

Qu'est-ce que cela a à voir avec la conversion ? Il y a un numéro de source 500000000.0001

La question est de savoir combien de décimales il comporte. La réponse est 4, et vous avez 8.

 
A100:

Il y a un numéro de source 500000000.0001

Il n'y a pas de tel numéro parmi les doubles. Il y a une valeur approximative égale à celle-ci - 500000000.000100016593933105. Il lui est attribué.

 
A100:

Qu'est-ce que cela a à voir avec la conversion ? Il y a un nombre initial 500000000.0001

La question est de savoir combien de décimales il comporte. La réponse est 4, et vous avez 8.

Pas "vous en avez 8", mql en a 8 par défaut. Ne pouvons-nous pas lire la documentation ?

 
Alexandr Sokolov:

Je pense que je ne suis pas le seul à avoir eu une situation rare où j'avais besoin d'obtenir le nombre de décimales, et la fonction Digits() ne fonctionne qu'avec des guillemets, et d'ailleurs il n'y a aucune information à ce sujet nulle part (du moins au moment d'écrire ce billet, je ne l'ai pas trouvée avant, donc je veux montrer quelle solution j'ai trouvée).


Comme il s'est avéré, l'essence de la banale simple, mais a encore un inconvénient - cette fonction ne reconnaît pas les zéros, si après eux il n'y a pas d'autres chiffres. Par exemple, la fonction renvoie 2 lorsqu'elle est suivie de 0,01, mais lorsqu'elle est suivie de 0,0000, elle renvoie 0 (c'est-à-dire qu'elle ne peut pas voir quatre zéros). Tenez donc compte de cette lacune dans vos développements.


Le code dans MQL4



N'êtes-vous pas un peu inquiet par le fait que votre paramètre Valeur est coloré en bleu ?

 
Алексей Тарабанов:

Le fait que le paramètre Valeur soit en bleu ne vous dérange pas le moins du monde ?

Il en est ainsi ici sur le forum pour une raison quelconque, mais dans l'éditeur c'est la même chose que d'habitude.

Raison: