Geschrieben 25. August 201015 Jr. comment_104041 Beim coden ist mir etwas aufgefallen was mich an der logik vom MT4 verzweifeln lässt.Eventuell könnt ihr mir das erklären. double tmp; int Ergebnis1, Ergebnis2, Wert=6973; Ergebnis1=Wert/0.1; Ergebnis1=MathRound(Ergebnis1/1000); Ergebnis1=Ergebnis1*1000; Ergebnis1=Ergebnis1*0.1; tmp=Wert/0.1; tmp=MathRound(tmp/1000); Ergebnis2=tmp; Ergebnis2=Ergebnis2*1000; Ergebnis2=Ergebnis2*0.1; Comment("\nErgebnis1: ",Ergebnis1, "\nErgebnis2: ",Ergebnis2);[/Code]Ergebnis1: 6900Ergebnis2: 7000 Melden
Geschrieben 25. August 201015 Jr. comment_104043 Wo siehst du denn einen Fehler? Also ich seh da eigentlich keine Probleme. tmp ist bei dir ein double. Während Ergebnis1 ein Integer ist. Dadurch dürfte die Division im 2. "Päckchen" genauer sein als die oben. Also arbeitest du schon mit komplett anderen Werten. Am Ende legst du tmp wieder in einen Integer. Also wird da wieder was weg/ab/zugerundet. Oder ist meine Logik jetzt falsch? Viele Grüße,Rumpel Melden
Geschrieben 25. August 201015 Jr. Autor comment_104047 Ich habe mal die Überflüssigen Zeilen entfernt. double tmp; int Ergebnis1, Ergebnis2, Wert=6973; Ergebnis1=Wert/0.1; //->69730 Ergebnis1=MathRound(Ergebnis1/1000); //->MathRound(69.730)->70 tmp=Wert/0.1; //->69730 tmp=MathRound(tmp/1000); //->MathRound(69.730)->70 Ergebnis2=tmp; Comment("\nErgebnis1: ",Ergebnis1, "\nErgebnis2: ",Ergebnis2); Ergebnis1: 69Ergebnis2: 70Hinter "//" sind meine gedanklichen Zwischenergebnisse. Eventuell kann mich jemand korrigieren und mein "->" berichtigen und auch erklären warum es so ist. Melden
Geschrieben 25. August 201015 Jr. comment_104048 Ergebnis1=MathRound(Ergebnis1/1000);[/Code]hier liegt der Fehler bzw. das Problem. Wenn du ein Integer durch einen Integer teilst (in C), dann ist das Ergebnis immer ein Integer (ohne dass du runden musst)! Die Nachkommastellen werden dann einfach abgeschnitten. Du müsstest also "Ergebnis1/1000.0" schreiben. Dann sollte das gleiche raus kommen, wie in dem anderen Fall. Man sollte deshalb bei Divisionen immer drauf achten, dass mindestens eine der Zahlen ein Double ist! Melden
Geschrieben 25. August 201015 Jr. Autor comment_104049 Klasse Knochen danke dir.Gut erklärt so dass sogar ich es verstehe. Melden
Beim coden ist mir etwas aufgefallen was mich an der logik vom MT4 verzweifeln lässt.
Eventuell könnt ihr mir das erklären.