Einzelnen Beitrag anzeigen
  #5 (permalink)  
Alt 19.04.18
traderdoc traderdoc ist offline
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Ca$hDigger Beitrag anzeigen
Das ist kein Fehler sondern völlig normal. Der Umgang mit Fließkommazahlen in einer Programmiersprache hat mit Zahlen im "normalen" Leben nur wenig zu tun. Eine Fließkommazahl wird aus einer Mantisse und einem Exponenten dargestellt.
Siehe: https://de.wikipedia.org/wiki/Gleitkommazahl

Na ja, ich denke hier hätte MetaQuotes etwas sorgsamer proggen müssen, denn diese kleine Fehlerchen können gravierende Fehler nach sich ziehen.
Bis zu der Stelle, wo die Fließkommazahl letztendlich errechnet wird, gebe ich Dir recht. Aber wenn per NormalizeDouble die Fließkommazahl z.B. auf 2 oder mehreren Stellen reduziert werden soll, dann kann das Ergebnis nicht 95.400000000000000001 lauten. Regelmäßige Fehler treten ja auf, wenn Fließkommazahlen als Price in OrderSend() angegeben werden, ohne! vorher NormalizeDouble verwendet zu haben, auch wenn man denkt, laut Mathematik, dass z.B. aus einer Division eine Zahl resultiert die dem Price-Format der Funktion OrderSend () entspricht. Erst mit NormalizeDouble(Wert, Digits) würde die Fließkommazahl maximal die Kommastellen haben, die dem Wert von Digit entspricht. Und dann tritt auch nie ein OrderSend-Fehler auf.
Daher denke ich, dass diese krumme Zahl 95.400000000000000001 nach der Anwendung von y=NormalizeDouble(x,2); als 95,4 vorliegt, nur durch die Anzeigefunktionen Alert() oder Print() werden solche krummen Zahlen angezeigt. Abhilfe schaft hier wiederum die bereits erwähnte Funktion DoubleToStr(Wert, 2).

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.