Einfacher MT4+ Code in funktioniert nicht...(C++)
-
int SMMrd_131204130119() { double Ind_Wert=differenzErmitteln(BewegungsWert(2),100); if(-1.49 < Ind_Wert && Ind_Wert < -0.12) { Debugging(Ind_Wert); return(1); } Debugging("##_"+Ind_Wert+"_##"); return(0); }In meinem Debuggingfile sind Zeilen wie:
##-0.12000000## - Was ja richtig wäre !!Aber auch:
-0.12000000- Was ja falsch ist, denn dieser Wert ist nicht kleiner als -0.12!!Bitte um Hilfe!
-
werkla4 schrieb:
Aber auch:
-0.12000000- Was ja falsch ist, denn dieser Wert ist nicht kleiner als -0.12!!Bitte um Hilfe!
kein Problem: die Zahl ist nicht -0.120000, sondern -0.120000000000003 und somit eben doch kleiner als -0.12
-
Es gibt nur diese Ausgaben wie beschrieben: nichts mit einer 3 am Ende alles 0 nur Nullen!
-
werkla4 schrieb:
Es gibt nur diese Ausgaben wie beschrieben: nichts mit einer 3 am Ende alles 0 nur Nullen!
ja, da wird nicht die gesamte Zahl ausgegeben. Dass da so viele Nullen stehen, ist ein Indiz dafür, dass da noch was kommt.
-
Also schreibt mir der PC nicht den ganzen double Wert in den Textfile wie er Ihn zum berechnen nimmt? Wie soll ich denn so arbeiten wenn man das alles garnicht mehr nachvollziehen kann, weil mir die andere Hälfte von der Zahl versteckt bleicht!
-
werkla4 schrieb:
Also schreibt mir der PC nicht den ganzen double Wert in den Textfile wie er Ihn zum berechnen nimmt? Wie soll ich denn so arbeiten wenn man das alles garnicht mehr nachvollziehen kann, weil mir die andere Hälfte von der Zahl versteckt bleicht!
er macht genau das was du ihm sagst. Wenn du ihm das falsche sagst, macht er was?
-
ichhoffedasistrichtig schrieb:
er macht genau das was du ihm sagst. Wenn du ihm das falsche sagst, macht er was?
Um genauer zu sein: Du hast vermutlich gesagt: Ausgabe mit Standardformatierung, da du die Formatierung nicht geändert hast. Und die Standardformatierung beinhaltet laut Sprachstandard eine (signifikante) Stellenzahl von 6 für sämtliche Fließkommawerte.
-
ichhoffedasistrichtig schrieb:
werkla4 schrieb:
Also schreibt mir der PC nicht den ganzen double Wert in den Textfile wie er Ihn zum berechnen nimmt? Wie soll ich denn so arbeiten wenn man das alles garnicht mehr nachvollziehen kann, weil mir die andere Hälfte von der Zahl versteckt bleicht!
er macht genau das was du ihm sagst. Wenn du ihm das falsche sagst, macht er was?
Sehr hilfreich für den Lösungsansatz "ichhoffedasistrichtig", also ich habe mich da mal durchprobiert und bin auf eine Lösung gekommen:
double Ind_Wert=differenzErmitteln(BewegungsWert(2),100); string Wert=DoubleToStr(Ind_Wert,10); Ind_Wert=StrToDouble(Wert);Die vordefinierte Methode von MT4+ DoubleToStr() lässt mich die Genauigkeit festsetzen. Somit sei das Problem gelöst!!
Danke nochmal für den Tipp!
-
werkla4 schrieb:
ichhoffedasistrichtig schrieb:
werkla4 schrieb:
Also schreibt mir der PC nicht den ganzen double Wert in den Textfile wie er Ihn zum berechnen nimmt? Wie soll ich denn so arbeiten wenn man das alles garnicht mehr nachvollziehen kann, weil mir die andere Hälfte von der Zahl versteckt bleicht!
er macht genau das was du ihm sagst. Wenn du ihm das falsche sagst, macht er was?
Sehr hilfreich für den Lösungsansatz "ichhoffedasistrichtig", also ich habe mich da mal durchprobiert und bin auf eine Lösung gekommen:
double Ind_Wert=differenzErmitteln(BewegungsWert(2),100); string Wert=DoubleToStr(Ind_Wert,10); Ind_Wert=StrToDouble(Wert);Die vordefinierte Methode von MT4+ DoubleToStr() lässt mich die Genauigkeit festsetzen. Somit sei das Problem gelöst!!
Danke nochmal für den Tipp!
Ähm, das ändert nichts!?*
Dein double hat natürlich soviele Stellen, sie werden nur nicht alle ausgegeben!
In deinem double steht sowas wie -0.120000000000003. Wenn dus allerdings ausgibst, werden nur die ersten sechs Stellen ausgegeben.
-> Genauigkeit der Ausgabe ändern.*Jetzt mal vorausgesetzt du gibst immer noch Ind_Wert und nicht Wert aus. Selbst dann wäre das aber unnötig kompliziert.