Aktualisierung 19. Mai 2021
Funktionen zur Fehlersuche hinzugefügt
// Konvertierung eines numerischen Wertes in eine exakte dezimale Zeichenkette. string DoubleToStringExact(double value); // Konvertierung des numerischen Wertes in die rohe hexadezimale Textzeichenfolge. string DoubleToHexadecimal(double value);
Verschiedene Funktionen hinzugefügt
// Konvertiert x im Bereich [min, max] in y in einem anderen Bereich [new_min, new_max]. // Dies kann verwendet werden, um Indikatorwerte oder grafische Objekte zu skalieren. double map_range(double x, double min, double max, double new_min, double new_max); // Anzahl der Stellen nach dem Dezimalpunkt ermitteln. int GetDigits(double number);
Aktualisierung 27. Mai 2021
Funktionen zur Fehlersuche hinzugefügt
// Rückgabe int diff zwischen zwei Floats, ausgedrückt in Epsilon (ulps). long UlpDiff(const double num1, const double num2); // Gibt den nächsten darstellbaren Wert nach x zurück double nextafter(double num);
Verschiedene Funktionen hinzugefügt
bool IsRound(const double number, const int digits); bool IsRoundToStep(const double number, const double step);
Diverse Funktionen hinzugefügt
//Gibt die Anzahl der ganzzahligen Ziffern links vom Dezimalpunkt. int IntegerDigits(double number); //Abbildung von x auf einer Skala [min, max] auf die normierte Skala [0, 1]. double normalize(double x, double min, double max);
Praktische Funktionen für die binäre Darstellung von Doubles
//Returnt den Double-Wert, der einer Bit-Darstellung entspricht. double LongBitsToDouble(long bits); //Retourniert die Bit-Darstellung, die einem Double-Wert entspricht. long DoubleToLongBits(double value); //Retourniert den in der Bitdarstellung verwendeten unverzerrten Exponenten. int GetExponent(double value); //Retourniert die in der Bitdarstellung verwendete Mantisse. long GetMantissa(double value); //Returnt die Größe eines ulp des Arguments. double Ulp(double value);
Praktische Funktionen für die String-Darstellung von Doubles
// Umwandlung eines numerischen Werts in die kürzeste String-Darstellung // die in denselben numerischen Wert umgewandelt werden. string Repr(double value);
Aktualisierung 1. Juni 2021
Neue Funktionen hinzugefügt:
// Gibt die Rohkodierung des Exponenten in der Bitdarstellung zurück. int RawExponent(double value); // Gibt die Rohkodierung des Signifikanten in der Bitdarstellung zurück. long RawSignificand(double value); // Gibt den unverzerrten (angepassten) Exponenten eines Double-Wertes zurück. int Exponent(double value); // Gibt den Signifikanten eines Double-Wertes zurück. double Significand(double value); // Bestimmen Sie, ob die Zahl genau in Double darstellbar ist. bool IsExactDouble(double value); // Formatiert Zahlen mit Tausendertrennzeichen. string FormatNumber(const double number,const string separator=",");
// Ermittelt, ob der übergebene Wert eine Ganzzahl ist. bool IsInteger(double num); // Dezimalteil ermitteln (immer positiv) double GetFraction(double num); // Abschneiden (Begrenzen) einer Zahl auf Grenzen (Bereich) template<typename T> T Clip(T value, T low, T high); // In mql zwingt ein Fehler bei der Nullteilung das mql-Programm zum Anhalten. double safeDiv(double x, double y); // Konvertierung des numerischen Werts in die Hex-Float-Konstante string. string DoubleToHexFloatConstant(double value);
Aktualisierung 20. Juni 2021
Neue Funktion hinzugefügt:
// Erhöht eine Gleitkommazahl um eine bestimmte Anzahl von ULPs. double DoubleAdvance(double value, long distance);
Aktualisierung 21. Juni 2021
Neues funktionsähnliches Makro hinzugefügt:
// Druckt Doppelwerte unter Verwendung der Formatangabe "%.17g" für die Rundung. #define PRINT_R(A) Print(#A + " = ", Repr(A))
Aktualisierung 27. Januar 2023
Die Rundungsfunktionen wurden umbenannt, um konsistenter zu sein:
double MathRound(const double value, const int digits); double MathRound(const double value, const double step); double MathFloor(const double value, const int digits); double MathFloor(const double value, const double step); double MathCeil(const double value, const int digits); double MathCeil(const double value, const double step); double MathTrunc(const double value, const int digits); double MathTrunc(const double value, const double step);
Zwei neue Funktionen für den Vergleich von Doubles hinzugefügt:
//+------------------------------------------------------------------+ //| Fast-Gleichheit prüfen (kleine Rundungsfehler ignorieren) //| Wenn sich die binären Darstellungen zweier Doppelwerte um mehr als | unterscheiden //| Ein niederwertiges Bit (ulp), die Funktion gibt false zurück. //+------------------------------------------------------------------+ bool AlmostEqual(const double a, const double b); //+------------------------------------------------------------------+ //| Prüfen, ob zwei Fließkommazahlen im Wert nahe beieinander liegen. //| Wobei n: die Anzahl der verlorenen signifikanten Ziffern ist. //| durch Rundungsfehler (maximal zulässige Genauigkeitsdifferenz). //| In der Praxis funktioniert meist etwas wie n = 2 oder 3. //+------------------------------------------------------------------+ bool IsClose(const double a, const double b, const int maxDifferentSignificantDigits = 2);
- 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.
Math Utils:
Autor: amrali