Bonne pratique pour éviter les erreurs de division zéro: 1) Toujours laisser un espace avant et après le symbole de division dans les calculs. De cette façon, il est plus facile d'utiliser la fonction de recherche CtrlF pour trouver toutes les divisions sans avoir à passer par tous les commentaires pré-fixes ainsi. 2) Toujours placer des calculs qui utilisent le symbole de division dans les accolades de commande d'un conditionnel qui vérifie pour s'assurer que le nombre que vous divisez par n'est pas égal à zéro. Cela empêchera le programme de s'arrêter avec une erreur de division zéro si le dénominateur est jamais égal à zéro. par exemple. 3) C'est une bonne idée d'ajouter une sorte de rapport d'erreur pour s'assurer que le programme ne continue pas sans vous avertir que le calcul à l'intérieur de ces accolades de commande n'a pas été exécuté quand le dénominateur est égal à zéro - sinon vous pourriez ne jamais réaliser parce que L'erreur de division zéro ne se produirait plus. Il est probablement correct de supposer que si le dénominateur est jamais nul, alors quelque chose a déjà mal tourné avant que l'erreur de division zéro puisse se produire, et vous voudriez en savoir plus. par exemple. Ces trois ajouts peuvent prendre quelques secondes supplémentaires pour taper chaque fois dans le code, mais ils permettra d'économiser des minutes ou des heures dans la prévention d'une erreur de division zéro de jamais se produire. Ajoutez-les dans votre code et le problème se révélera. De bons points à retenir, clerin6 diviser par zéro erreurs sont assez faciles à prévenir de cette façon ou si vous savez comment les calculs sont effectués sur les variables qui sont impliqués dans une opération de division. Relatif, bien qu'un peu différent sont la création de zéro involontaire et sinistre via des bogues de division entière. Par exemple, si length est une entrée int externe et la sortie désirée est un nombre en virgule flottante: Si length est un entier, la ligne ci-dessus produira un zéro pour la plupart des longueurs. Bien que ce qui suit est réellement destiné: (produira un poids en virgule flottante qui peut être utilisé dans le cadre d'un calcul de pondération exponentielle). Depuis quelques temps, avec le changement à la nouvelle version de MT4 (build 610), j'ai la même erreur sur mon indicateur lorsque Im l'utiliser avec iCustom dans mon EA. Cet indicateur est la célèbre Hull Moving Average 2.0 (bicolor smouthed MA). Son nouveau nom est HMA maintenant. Certaines erreurs syntaxe sont corrigées comme quotchar par quotCharquot. Quelqu'un peut m'aider Im faire une table de signalisation où je vais mettre des signaux d'indicateurs que j'aime, donc aujourd'hui j'ai fait une fonction qui renvoie un signal pour l'indicateur StepMA Stoch, maintenant le problème est que parfois il donne une erreur Zero Divde et la plupart Wierd chose est que parfois, pas aways, quand je supprime la fonction de l'erreur s'arrête de montrer. Donc, le problème est dans le code des fonctions, mais je ne sais pas où parce que j'ai tryied beaucoup et n'a obtenu aucune solution, merci à l'avance. Vous montre plusieurs lignes où vous effectuez la division. Vous devrez comprendre pourquoi le diviseur devient 0 parfois. Int StepMAStochSignal (chaîne nSymbol. intern PeriodWATR 7. double Kwatr 0.7. Int HighLow 0) Je n'ai jamais vu les variables intitalized dans l'appel comme ça. Si les variables font partie de l'appel, elles doivent déjà avoir des valeurs. Thats valeurs par défaut alors quand je fais un appel pour la fonction et si je ne fournissent aucune valeur pour ces variables, thats la valeur qu'ils vont obtenir. Merci, Ill essayer de comprendre ce qui se passe.
No comments:
Post a Comment