Тема тут уже обсуждалась (https://www.mql5.com/ru/articles/1561).
Решение: double fmodcor(double a, double b) { int tmpres=int(a/b); return(a-tmpres*b); }
Особенности работы с числами типа double в MQL4
- 2009.11.02
- MetaQuotes Software Corp.
- www.mql5.com
В данной заметке собраны советы по решению наиболее часто возникающих ошибок при работе с числами типа double в программах на MQL4.
Функция MathMod рассчитывает вещественный
остаток f от val / y таким образом, что val = i * y + f , где i
является целым числом, f имеет тот же знак, что и val, и абсолютное
значение f меньше, чем абсолютное значение y.
Для определения чёт/нечет вычисления на double не подходят из-за ограниченной точности.
Распечатайте промежуточные значения.
Распечатайте промежуточные значения.
Получив в остатке MathMod 0.00001999999999x(что является правильным значением) и нормализовав число Вы получаете 2*Point
Рекомендую перейти на целочисленную проверку чёт/нечет
Спасибо
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всем привет, есть довольно простой код, но он возвращает такие чудеса жа страшно.
Суть: Умножаем цену на секунды = и вычисляем вещественный остаток от полученного числа деленное на 2*пункта.
ну по коду ясно что должен возвращать чет или нечет,
так вот иногда возвращает чет иногда нечет, - тоесть остаток от деления двух числе, но иногда возвращает бред, как то:
как видно он иногда возвращает 0.00002 - хотя функция должна возвращать либо 0.00001 либо 0