Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Je viens également d'essayer de l'utiliser, sans succès. Il est possible que le DTS modifie simplement la précision d'une valeur pour l'apparence et non la valeur réelle ? Je ne vois pas d'autres options.
Oui, je pense que la chaîne de caractères fait juste de la valeur dans le double une version imprimable de celle-ci, mais ne la modifie pas. Je ne suis pas sûr de savoir comment le faire en MQL, mais je sais qu'en Java vous pouvez forcer une conversion de type d'un type à un autre (dans ce cas, double à int).
Extrait de la documentation d'Oracle à l'adresse http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html. Il ne s'agit que d'une petite partie du code présenté.
Dans votre cas, je pense que vous devriez le faire dire quelque chose comme
Évidemment, vous devrez ajuster les noms pour qu'ils correspondent mieux à votre code.
http://www.studytonight.com/java/type-casting-in-java le couvre également. Comme Java et MQL sont tous deux censés être basés sur C++, cela pourrait vous aider.
@OP ainsi que la lecture de tous les liens MQL4 précédemment postés, voir Working With Doubles et PrintFormat.
@JD4 Je ne vois pas en quoi le fait de poster du code Java et de faire référence aux spécifications Java aide le PO. De plus, Java et C++ sont similaires mais je ne suis pas d'accord pour dire qu'ils sont basés sur C++.
Bien que vous essayiez d'être utile, je pense que beaucoup de vos réponses, lorsque vous n'êtes pas sûr des réponses vous-même, ne font qu'embrouiller les personnes qui cherchent de l'aide.
@OP ainsi que la lecture de tous les liens MQL4 précédemment postés, voir Working With Doubles et PrintFormat.
@JD4 Je ne vois pas en quoi le fait de poster du code Java et de faire référence aux spécifications Java aide le PO. De plus, Java et C++ sont similaires mais je ne suis pas d'accord pour dire qu'ils sont basés sur C++.
Bien que vous essayiez d'être utile, je pense que beaucoup de vos réponses, lorsque vous n'êtes pas sûr des réponses vous-même, ne font qu'embrouiller les personnes qui cherchent de l'aide.
Je pense que vous avez mal interprété mon message. L'OO de Mql4 est certainement basé sur le C++. Je ne pense pas que cela soit contesté. Je faisais référence à votre affirmation :
JD4: Since Java and MQL are both supposed to be based on C++, this might help you out.
suivi par beaucoup de références Java. J'ai dit -
ydrol: De plus, Java et C++ sont similaires, mais je ne suis pas d'accord pour dire qu'ils sont basés sur C++.
Je parlais spécifiquement de vos références Java. A mon avis, Java n'est pas basé sur c++.
Quoi qu'il en soit, le sujet de la représentation des décimales en virgule flottante a été couvert à plusieurs reprises dans les fils de discussion mentionnés par WHRoeder plus tôt.
Il semble que l'OP veut arrondir à deux décimales, mais sans afficher de résultats ou d'exemples spécifiques, je suppose que le degré d'erreur d'arrondi qu'ils voient peut être ignoré.
Les deux sont faux. Il arrondit au nombre entier le plus proche. Non pertinent. Il renvoie un double. 1 = 1.0 = 1.00 = 1.00000 = 1.0000000000000000000000000000000000 CHIFFRES INFINIS
Apprenez à connaître la virgule flottante. L'opérande ==. - Forum MQL4
Je suppose que WH doit revenir en arrière et se relire, j'ai dit ce que la page disait que la fonction faisait, pas ce qu'elle fait réellement. Et la programmation informatique est l'un des rares endroits où (int) 1 != (double) 1.00000000 (ad infinitum) en ce qui concerne les types de données.
@ ydrol, j'ai manqué la direction de votre intention avec votre déclaration concernant MQL/Java/C++. Quelques documents de référence à consulter concernant l'origine de Java en tant que langage de programmation.
https://en.wikipedia.org/wiki/Java_(langage de programmation)
http://www.freejavaguide.com/history.html
Puisqu'ils disent tous les deux exactement la même chose en ce qui concerne C++, je vais poster à partir de wiki : "Le langage dérive beaucoup de sa syntaxe de C et C++, mais il a moins de facilités de bas niveau que l'un ou l'autre".
Du même âge"La syntaxe d'une langue définit sa forme de surface ". (parenthèses, etc.). Ce qui est discuté dans ce fil n'est pas lié à la syntaxe. Mon opinion est que dire "Java est basé sur C++" de la même manière que MQL est une déclaration beaucoup plus forte avec laquelle je ne suis pas d'accord.
Mais comme il s'agit d'une déclaration qualitative, nous pouvons avoir raison et tort en même temps. Je ne vois toujours pas comment les spécifications Java aident le PO, alors qu'il y a des liens spécifiques déjà donnés avec le problème et que ce n'était pas une question liée à la syntaxe.
Les deux articles que vous mentionnez, soulignent que Java emprunte à la syntaxe - mais pas plus. Il ne s'agit pas d'une question liée à la syntaxe.
Cependant, il est lié à la représentation en virgule flottanteIEEE 754 utilisée par MQL, qui est également partagée par les langues. (et beaucoup d'autres qui n'ont pas une syntaxe similaire au c - par exemple Pascal, ou même des applications comme Excel) et c'est vraiment parce que c'est un standard supporté par la plupart des CPU/FPU plutôt que des similarités syntaxiques des langages. Le problème est que la représentation en virgule flottante des fractions décimales a de petites erreurs. L'OP veut arrondir à deux décimales. Le formatIEEE 754 ne peut pas stocker avec précision un dixième (0,1) ou un centième (0,01). Dans le format binaireIEEE 754, il s'agit de fractions binaires récurrentes (de la même manière que 1/3 est une fraction décimale récurrente 0,33333... ) - La différence entre le nombre voulu et le nombre réel est assez faible (par exemple 0,00000000000001 ) mais suffisamment importante pour que
1/10 != 0.1 // probablement
Et int(0.1 * 10) pourrait s'arrondir dans le mauvais sens.
Mais comme l'OP n'a pas posté exactement ce qu'il voit, le meilleur conseil a été donné dans le 3ème message de ce sujet, allez lire les fils MQL. Je ne vois pas l'intérêt de leur suggérer également de lire les spécifications Java après que les fils MQL aient été donnés et qu'ils n'aient probablement aucune familiarité avec Java.
Résumé du fil de discussion :
Ce qui précède était une réponse spécifique à votre post spécifique"MathRound retourne un double ; nombre infini de décimales."
Encore une fois, selon la page de documentation.
"Valeur de retour
Valeur arrondie au nombre entier le plus proche."
Maintenant, une réponse spécifique à cette partie de votre post.
"Ce que la page dit, c'est ce qu'il fait. Elle arrondit. Rien à voir avec la question des décimales multiples."
Encore une fois, relisez la citation, elle dit qu'elle renvoie "Valeur arrondie à l'entier le plus proche". Un entier, par définition, est un nombre entier, c'est-à-dire sans décimales. Et encore une fois, si ce n'est pas ce qu'elle fait réellement, alors le code ou la description est cassé, et l'un ou l'autre ou les deux doivent être corrigés par MQ, ou bien une étiquette d'avertissement indiquant que ces fonctions ne fonctionnent pas comme annoncé.
Si elle renvoie effectivement le type qui lui est donné, mais à l'équivalent mathématique de la valeur de l'entier le plus proche (comme dans renvoie 1.00000 à partir de 1.23456, et 1 == 1.00000) mais ne renvoie pas un type d'entier réel, alors la page de référence doit spécifier quelque chose comme "ne change pas le type de données sous-jacent" ou une autre manière qui soit clairement indiquée.