
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
float askP=NormalizeDouble(Ask,Digits)/NormalizeDouble(Point,Digits);
float bidP=NormalizeDouble(Bid,Digits)/NormalizeDouble(Point,Digits);
float Averab=((askP+bidP))/2.0;
AUTOPRICE=MathFloor(Averab)*Point;
Print("FLOAT "+" askP="+askP+" bidP="+bidP+" Averab="+DoubleToString(Averab,10)+" AUTOPRICE="+DoubleToString(AUTOPRICE,10));
double AUTOPRICE2;
double askP2=NormalizeDouble(Ask,Digits)/NormalizeDouble(Point,Digits);
double bidP2=NormalizeDouble(Bid,Digits)/NormalizeDouble(Point,Digits);
double Averab2=((askP2+bidP2))/2.0;
AUTOPRICE2=MathFloor(Averab2)*Point;
Print("DOUBLE "+" askP2="+askP2+" bidP2="+bidP2+" Averab2="+DoubleToString(Averab2,10)+" AUTOPRICE="+DoubleToString(AUTOPRICE2,10));
Verbreitung:2
2017.02.26 09:56:54.475 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105143 bidP2=105141 Averab2=105142.000000 AUTOPRICE=1.0514200000
2017.02.26 09:56:54.475 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: FLOAT askP=105143 bidP=105141 Averab=105142.0000000000 AUTOPRICE=1.0514199734
Verbreitung:3
2017.02.26 09:57:47.832 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105144 bidP2=105141 Averab2=105142.5000000000 AUTOPRICE=1.0514200000
2017.02.26 09:57:47.832 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: FLOAT askP=105144 bidP=105141 Averab=105142.5000000000 AUTOPRICE=1.0514199734
Verbreitung:4
2017.02.26 09:58:05.813 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105145 bidP2=105141 Averab2=105143.000000 AUTOPRICE=1.0514200000
2017.02.26 09:58:05.813 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: FLOAT askP=105145 bidP=105141 Averab=105143.0000000000 AUTOPRICE=1.0514299870
Verbreitung:5
2017.02.26 09:58:39.495 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105146 bidP2=105141 Averab2=105143.5000000000 AUTOPRICE=1.0514300000
2017.02.26 09:58:39.495 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: FLOAT askP=105146 bidP=105141 Averab=105143.5000000000 AUTOPRICE=1.0514299870
2017.02.26 09:58:05.813 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105145 bidP2=105141 Averab2=105143.000000 AUTOPRICE=1.0514200000
Das Ergebnis ist korrekt. Averab2 < 105143.
Das Ergebnis ist korrekt. Averab2 < 105143.
Warum? weilAverab2=105143.0000000000
Warum?averab2=105143.0000000000
Forum für Handel, automatisierte Handelssysteme und Strategietests
Double vs FLOAT - unklarer MathFloor-Fehler
fxsaber, 2017.02.26 08:27
Der Ausdruck der Doppelnummer ist nicht von Bedeutung. Wenn Sie den wahren Wert von double ausdrucken wollen, müssen Sie sich die Bytes ansehen.
Warum? weilAverab2=105143.0000000000
Ich verstehe Sie. Danke, aber das betrifft nur das Entlüften.
Aber der tatsächliche Wert innerhalb des Codes ist derselbe wie nach dem Entpacken. Ich habe es mehr als einmal überprüft,
Das verstehe ich,
dass Double 1 = 1,0000000000000000000000000000112123515;
und so weiter.
:-( ok, die Hauptsache ist, dass das Problem mit float gelöst wird
dennhttps://www.mql5.com/ru/docs/math/mathfloor
105143
nach MathFloor(105143) =105142
auch wenn 105143.000000000000000000001
aber ich glaube, ich weiß, wovon du sprichst.
obwohl keine
warum MathFloor(105143) =105142 kann ich nicht verstehen... (es sei denn, es ist nicht105143, sondern105142,9999999999999999999999)
warum dann...
warum dann MathFloor(105143) =105142 kann ich nicht verstehen... (es sei denn, es ist nicht105143, sondern105142,999999999999999999999999)
void OnStart()
{
double Price1 = 105143;
double Price2 = Price1 - 1 e-11;
Print(TOSTRING(Price1) + TOSTRING(MathFloor(Price1)) +
TOSTRING(Price2) + TOSTRING(MathFloor(Price2)) +
TOSTRING(Price1 > Price2));
}
Sie sollten Doppelnummern nicht wörtlich nehmen. Die Umstellung auf Floating ist ein noch größerer Fallstrick.