Обновление 19 мая 2021 года
Добавлены функции для отладки
// Преобразование числового значения в точную десятичную текстовую строку. string DoubleToStringExact(double value); // Преобразование числового значения в шестнадцатеричную текстовую строку. string DoubleToHexadecimal(double value);
Обновление 21 мая 2021 года
Добавлены различные функции
// Преобразуем x в диапазоне [min, max] в y в другом диапазоне [new_min, new_max]. // Это можно использовать для изменения масштаба значений индикаторов или графических объектов. double map_range(double x, double min, double max, double new_min, double new_max); // Получение количества цифр после десятичной точки. int GetDigits(double number);
Обновление 27 мая 2021 года
Добавлены функции для отладки
// Возвращает разницу между двумя плавающими значениями, выраженную в эпсилон (ulps). long UlpDiff(const double num1, const double num2); // Возвращает следующее представляемое значение после x double nextafter(double num);
Добавлены различные функции
bool IsRound(const double number, const int digits); bool IsRoundToStep(const double number, const double step);
Добавлены скрипт'dotnet_cross_check.mq5' и 'RoundSharp.dll', написанные на C#.
Обновление 30 мая 2021 года
Добавлены различные функции
//Получение количества целых цифр слева от десятичной точки. int IntegerDigits(double number); // отобразите x в масштабе [min, max] на нормализованный масштаб [0, 1]. double normalize(double x, double min, double max);
Удобные функции для двоичного представления двоичных чисел
//Возвращает двойное значение, соответствующее битовому представлению. double LongBitsToDouble(long bits); //Возвращает битовое представление, соответствующее двойному значению. long DoubleToLongBits(double value); //Возвращает несмещенную экспоненту, используемую в битовом представлении. int GetExponent(double value); //Возвращает мантиссу, используемую в битовом представлении. long GetMantissa(double value); //Возвращает размер ulp аргумента. double Ulp(double value);
Удобные функции для строкового представления двоичных чисел
// Преобразование числового значения в кратчайшее строковое представление // которые превращаются в одно и то же числовое значение. string Repr(double value);
Обновление 1 июня 2021 года
Добавлены новые функции:
// Возвращает сырое кодирование экспоненты в битовом представлении. int RawExponent(double value); // Возвращает сырое кодирование сигнификата в битовом представлении. long RawSignificand(double value); // Возвращает несмещенную (скорректированную) экспоненту двойного значения. int Exponent(double value); // Возвращает знаковое значение двойного значения. double Significand(double value); // Определите, является ли число точно представимым в double. bool IsExactDouble(double value); // Форматирует число с разделителем тысяч. string FormatNumber(const double number,const string separator=",");
Обновление 17 июня 2021 года
Добавлены новые функции:
// Определяет, является ли переданное значение целым числом. bool IsInteger(double num); // Получение десятичной части (всегда положительной) double GetFraction(double num); // Обрезание (ограничение) числа по границам (диапазону) template<typename T> T Clip(T value, T low, T high); // В mql ошибка деления нуля заставляет программу mql остановиться. double safeDiv(double x, double y); // Преобразование числового значения в строку шестнадцатеричной константы float. string DoubleToHexFloatConstant(double value);
Обновление 20 июня 2021 года
Добавлена новая функция:
// Продвигает число с плавающей точкой на указанное количество ULP. double DoubleAdvance(double value, long distance);
Обновление 21 июня 2021 года
Добавлен новый макрос, похожий на функцию:
// Выведите двойные числа, используя спецификатор формата round-trip ("%.17g"). #define PRINT_R(A) Print(#A + " = ", Repr(A))
Можно ли их добавить в mt4? Вы тестировали их в mt4? (я имею в виду включаемый файл)
Обновление 27 января 2023 года
Переименованы функции округления для большей согласованности:
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);
Добавлены две новые функции для сравнения двойных чисел:
//+------------------------------------------------------------------+ //| Проверьте почти равенство (игнорируйте крошечную ошибку rounoff)| //| Если двоичные представления двух двоек отличаются более чем на | //| один наименее значимый бит (ulp), функция возвращает false.| //+------------------------------------------------------------------+ bool AlmostEqual(const double a, const double b); //+------------------------------------------------------------------+ //| Проверьте, близки ли по значению два числа с плавающей точкой.| //| Где, n: количество потерянных значащих цифр | //| через ошибки округления (максимально допустимая разница в точности)|. //| На практике обычно работает что-то вроде n = 2 или 3.| //+------------------------------------------------------------------+ bool IsClose(const double a, const double b, const int maxDifferentSignificantDigits = 2);
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Math Utils:
Удобные функции для сравнения и округления чисел с плавающей запятой (в ценах, лотах, деньгах).
Автор: amrali