double n = -1/MathPow(5.5, 0.2); Print(n);
Ich muss eine Funktion schreiben, die mit Potenzen arbeitet, und dabei habe ich etwas Interessantes entdeckt:
Wenn ich eine negative Bruchzahl durch eine negative Bruchpotenz ersetze, schreibt MQL5 -nan.
Ich habe es in C++ überprüft und das gleiche Ergebnis erhalten (ich weiß nicht, welche Version der Sprache verwendet wurde, weil ich zu faul war, um zu kompilieren und ich habe es nur mit cpp.sh getestet).
Die Pluszeichen geben die gleiche Antwort, es gibt keinen Fehler in MQL5! Aber was ist der Grund für eine solche Antwort? Wenn wir Mathematik verwenden, sollte die Antwort gegeben werden. Mathematisch gesehen ist eine Zahl in negativer Potenz gleich eins geteilt durch die gleiche Zahl in positiver Potenz. Mit anderen Worten:
Und der Taschenrechner auf dem Computer bestätigt das. Was hat es also mit den Abschlüssen auf sich?
In R:
(-5,5)^-0,2=NaN
-5.5^-0.2=-(5.5^-0.2)=-0.7110947
in R:
(-5,5)^-0,2=NaN
-5.5^-0.2=-(5.5^-0.2)=-0.7110947
Vielleicht wachsen die Beine aus der Tatsache, dass man aus einer negativen Zahl keine gerade Wurzel ziehen kann? Ich bin schon etwas verwirrt... Und vor allem, wie kann man sie umgehen?
Und vor allem, wie kann man sie umgehen?
m = 2
n = 10
double result = pow(pow(-5.5,2.0),-0.1); Print("result = ",result); //result = 0.7110947333604484ohne Klammern kann das Minuszeichen anders interpretiert werden, imho
Es wird ein Problem mit den Schildern geben. Die Wurzel aus einer geraden Potenz ist immer positiv
Es wird ein Problem mit den Schildern geben. Die Wurzel aus einer geraden Potenz ist immer positiv.
Bei Rechnern mit gebrochenem Grad
1/(-5.5 ^ -0.2) -0,7110947333604484236326007791589
In mql, wo der Grad gebrochen ist
double n = 1/MathPow(-5.5, -0.2); Print(n); zero divide in 'Pow.mq5'
In mql, wo der Grad ganzzahlig ist.
double n = 1/MathPow(-3.0, -3.0); Print(n); -27.0
Fazit: Die Funktion zählt die Nachkommastellen nicht korrekt und gibt Null-Division zurück.
m = 2
n = 10
ohne Klammern kann das Minuszeichen anders interpretiert werden, imhoVielen Dank für die Antwort, aber im Allgemeinen scheint es, wenn wir eine arithmetisch korrekte Lösung annehmen, dass nur komplexe Zahlen verwendet werden können, um eine solche Lösung zu implementieren... Bei der von Ihnen vorgeschlagenen Methode muss der Grad geteilt werden, damit der zugrunde liegende Wert immer einen positiven Grad hat und die Antwort immer positiv ist. Aber wenn man diese Anpassung weglässt, kommen wir nur zu den komplexen Zahlen, denn nach dem allgemein anerkannten algebraischen Modell, soweit ich weiß (ich bin kein studierter Mathematiker), ist die Wurzel einer negativen Zahl eine komplexe Zahl.
In mql, wo ist der fraktionale Grad
In mql, wo der Grad gebrochen ist
In mql, wo der Grad ganzzahlig ist.
Fazit: Die Funktion zählt die Nachkommastellen nicht korrekt und gibt Null-Divide zurück.
Die Funktion ist korrekt. Die Standard-Mathematik funktioniert dort einfach nicht)
Die Funktion ist korrekt. Die Standard-Mathematik passt da einfach nicht)
-0,2 ist nicht Null und führt zu einem Fehler bei der Division durch Null.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Ich muss eine Funktion schreiben, die mit Potenzen arbeitet, und dabei habe ich etwas Interessantes entdeckt:
Wenn ich eine negative Bruchzahl durch eine negative Bruchpotenz ersetze, schreibt MQL5 -nan.
Ich habe es in C++ überprüft und das gleiche Ergebnis erhalten (ich weiß nicht, welche Version der Sprache verwendet wurde, weil ich zu faul war, um zu kompilieren und ich habe es nur mit cpp.sh getestet).
Ich denke, es gibt keinen Fehler in MQL5, wenn die Antwort die gleiche in Plus ist! Aber die Frage ist, warum das so ist? Wenn wir nachrechnen, sollte die Antwort auf der Hand liegen. Mathematisch gesehen ist eine negative Zahl gleich eins geteilt durch die gleiche Zahl in positiver Potenz. Mit anderen Worten:
Und der Taschenrechner auf dem Computer bestätigt das. Was ist also der Trick mit den Noten?