Ermitteln der Anzahl der Dezimalstellen beliebiger Zahlen (nicht nur Anführungszeichen) unter Umgehung von Digits() in MQL4 und MQL5 - Seite 12
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
Dies ist wahrscheinlich die beste Lösung
es ist nicht korrekt, Doppelgänger auf Gleichheit zu vergleichen, außerdem ist die Aufgabe, auf das Vorzeichen genau zu sein
Schauen Sie sich die Datei stdlib.mq4 in MT4 an, dort gibt es ein Beispiel für einen korrekten Doppelvergleich
CompareDoubles()
SZZ: Hier ist ein Artikel zu diesem Themahttps://www.mql5.com/ru/articles/1561
Ich frage mich, wie Sie mit Logarithmen, Potenzierung mit nicht ganzzahligen Zahlen, Trigonometrie, .... Bibliotheken von Drittanbietern verwenden, Indikatoren... Sie haben alle Fehler!
Wenn Sie Super-Mega-Präzision benötigen, können Sie spezielle externe Bibliotheken wie gnu mp verwenden
Andernfalls, wenn Sie eine garantierte Genauigkeit benötigen (wenn bei jeder Operation Fehler berechnet werden), können Sie alle Arten von "Intervall-Libs" verwenden.
Wenn selbst das nicht ausreicht, können Sie Polynome anstelle von Ziffern verwenden.
aber ich habe noch nie solche Fälle gesehen, in denen solche Schaltungen wirklich von MT benötigt werden:-)
es gibt ein Double für das Auge :-)
es ist nicht korrekt, Doppelgänger auf Gleichheit zu vergleichen, außerdem ist die Aufgabe, auf ein Zeichen genau zu sein
Schauen Sie sich die Datei stdlib.mq4 in MT4 an, dort gibt es ein Beispiel für einen korrekten Doppelvergleich
CompareDoubles()
Nun, die Laufzeit mit CompareDoubles steigt um den Faktor 2 an. Dann ist es besser so:
Nun ja, und die Ausführungszeit mit CompareDoubles steigt um den Faktor zwei. Sie sollten es besser so machen:
Wir sprechen über die korrekte Berechnung, ich kann Ihren Code jetzt nicht überprüfen, aber es ist nicht schwer, Sie müssen Ihr Beispiel mit einem Beispiel vergleichen, das DoubleToStr() in der Schleife verwendet, wenn es keinen Unterschied gibt, dann ist alles korrekt
ZS: Ich habe mit fmod() versucht, ich glaube, ich habe ein Beispiel gepostet, es funktioniert nicht richtig, wie bei 0.07 überprüfen sollte - sofort ein Fehler aufgetaucht
Wir sprechen über die korrekte Berechnung, ich kann Ihren Code jetzt nicht überprüfen, aber es ist nicht schwer, Sie müssen Ihr Beispiel mit dem Beispiel mit DoubleToStr() in der Schleife vergleichen, wenn es keinen Unterschied gibt, dann ist alles korrekt
Ich habe es bereits überprüft und die Geschwindigkeit berechnet, und es ist der beste Weg. Es sei denn, Sie müssen nach mehr als 7 Zeichen suchen, natürlich.
S.s. 0,7 und 0,07 und 500000000,0001, usw. alle korrekt berechnet.
s.s. Aber für 500000000.9991 ist es noch schlimmer. In der Forex-Praxis spielt dies jedoch kaum eine Rolle.
In der Forex-Praxis ist dies jedoch kaum von Bedeutung.
Wenn es sich um Handelsaufträge handelt, ist dieses Problem bedeutungslos - die Preise sind auf Ziffern normalisiert, während sich die Lose auf das Mindestlos beziehen.
Wenn es sich um ein Problem mit der mathematischen Modellierung handelt, kann sie nützlich sein.
Es hängt vom Problem ab. Wenn es sich um Handelsaufträge handelt, ist diese Aufgabe völlig bedeutungslos - die Preise sind auf Ziffern normalisiert, und die Lose beziehen sich auf das Mindestlos.
Wenn es sich um eine Aufgabe mit mathematischer Modellierung handelt, kann sie nützlich sein.
Natürlich nicht, um neuronale Netze zu schreiben =))) und zu sagen, es ist bequem, Preise/Lose/Geld als 4-Byte-Ganzzahl mit Dezimalwert zu speichern, was die Datengröße um das Zweifache reduziert.
es ist nicht korrekt, Doppelgänger auf Gleichheit zu vergleichen, außerdem ist die Aufgabe, auf ein Zeichen genau zu sein
Schauen Sie sich die Datei stdlib.mq4 in MT4 an, dort gibt es ein Beispiel für einen korrekten Doppelvergleich
CompareDoubles()
SZZ: Hier war ein Artikel zu diesem Themahttps://www.mql5.com/ru/articles/1561
Die Aufgabe besteht also darin, zu bestimmen, um wie viele Stellen x normalisiert ist. Es ist also in Ordnung. Es sei denn, Sie waren zu faul, eine solche Leiter zu schreiben.
Es sei denn, Sie waren zu faul, eine solche Leiter zu schreiben.
Man kann es auch ohne Leiter machen, aber es dauert 10 % länger.
Man kann es auch ohne Leiter machen, aber es dauert 10 % länger.
Dieser Wert: f/=0,0000001; ist fragwürdig.