Obtenir le nombre de décimales de n'importe quel nombre (pas seulement les guillemets) en contournant Digits() dans MQL4 et MQL5
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 de l'écriture de ce post je l'ai trouvé avant, donc je veux montrer quelle solution j'ai trouvée).
Il s'est avéré que l'essence est banalement simple, mais présente tout de même 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, cette fonction renvoie 2 lorsqu'elle est suivie de 0,01, mais lorsqu'elle est suivie de 0,0000, elle renvoie 0 (ce qui signifie qu'elle ne peut pas voir quatre zéros). Vous devez donc tenir compte de cette lacune dans vos développements.
Le code dans MQL5 a dû être légèrement amélioré, car apparemment dans MQL5 les variables de type double sont automatiquement assignées , 0 à la fin, peu importe si la variable est assignée à un entier ou non. Pour cette raison, la fonction n'a jamais retourné 0.
Supposons que nous donnions le nombre 2,4875 et que la fonction renvoie 4.
Que devons-nous en faire ? Quelque chose dont je ne comprends pas l'intérêt(
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 de l'écriture de ce post je l'ai trouvé avant, donc je veux montrer quelle solution j'ai trouvée).
Il s'est avéré que l'essence est banalement simple, mais présente tout de même 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, cette fonction renvoie 2 lorsqu'elle est suivie de 0,01, mais lorsqu'elle est suivie de 0,0000, elle renvoie 0 (ce qui signifie qu'elle ne peut pas voir quatre zéros). Tenez donc compte de cette lacune dans vos développements.
Code en MQL4
Le code à MQL5
Le code MQL5 a dû être légèrement amélioré, car apparemment dans MQL5 les variables de type double se voient automatiquement attribuer 0 à la fin, que la variable soit un entier ou non. Pour cette raison, la fonction n'a jamais retourné 0.
string string_value = (string)value;
ne lisez pas plus loin :-)
Supposons que nous donnions le nombre 2.4875, la fonction retournera 4.
Qu'est-ce qu'on en fait ? Je n'ai pas l'impression d'avoir compris.
En fonction de qui a besoin de quoi. Par exemple, j'avais besoin d'entiers pour calculer plus facilement l'indice de corrélation
vous n'avez pas besoin de lire plus loin :-)
Qu'est-ce qui n'est pas clair pour un programmeur ici).
Au contraire, il existe une fonction StringFind(), il n'est pas nécessaire de parcourir les caractères en boucle pour le trouver.
merci
également une bonne solution
également une bonne solution
Une bonne solution fonctionne généralement correctement
void OnStart() { double price = 500000000.0001; Print( price, ":", GetDigits( price )); }
Résultat : 500000000.0001:8
Combien de chiffres après le point décimal ? Est-il vraiment 8 ?
Une bonne solution fonctionne généralement correctement
Résultat : 500000000.0001:8
Combien de chiffres après le point décimal ? Est-ce que c'est vraiment huit ?
Oui, huit.
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
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.
Code en MQL4
Le code à MQL5
Le code MQL5 a dû être légèrement amélioré, car apparemment dans MQL5 les variables de type double se voient automatiquement attribuer 0 à la fin, que la variable soit un entier ou non. Pour cette raison, la fonction n'a jamais retourné 0