Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5 - страница 12
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Наверное это лучшее решение
не корректно double сравнивать на равенство, тем более задача в точности до знака заключается
посмотрите в МТ4 файл stdlib.mq4, там был пример правильно сравнения double
CompareDoubles()
ЗЫ: по сабжу вот статья была https://www.mql5.com/ru/articles/1561
Интересно, как вы будете логарифмы считать, возведения в степень нецелыми числами, использовать тригонометрию,.... использовать сторонние библиотеки, индикаторы... Они все с погрешностью!
если "позарез" нужна супер-мега точность, влёт берём специальные внешние библиотеки типа gnu mp
иначе если нужна гарантированная точность (когда при каждой операции вычисляется ещё и ошибка), то берём всякие "интервальные либы"
если даже этого мало - то вместо вместо цифирь используем полиномы
но ни разу не видел случая чтобы такие загоны были реально востребованы из МТ :-)
тут double за глаза :-)
не корректно double сравнивать на равенство, тем более задача в точности до знака заключается
посмотрите в МТ4 файл stdlib.mq4, там был пример правильно сравнения double
CompareDoubles()
Ну-ну, и время выполнения с CompareDoubles взлетает в 2 раза. Тогда уж лучше так:
Ну-ну, и время выполнения с CompareDoubles взлетает в 2 раза. Тогда уж лучше так:
речь идет о корректном вычислении, я сейчас не смогу проверить Ваш код, но это не сложно, нужно Ваш пример сравнить с примером с использованием DoubleToStr() в цикле, если отличий нет, значит все корректно
ЗЫ: я пробовал с fmod() кажется выкладывал пример, он не корректно работает, вроде на 0.07 нужно проверить - сразу баг выскакивал
речь идет о корректном вычислении, я сейчас не смогу проверить Ваш код, но это не сложно, нужно Ваш пример сравнить с примером с использованием DoubleToStr() в цикле, если отличий нет, значит все корректно
Я уже проверил, и по скорости посчитал - выходит самый удачный вариант. Если не нужно смотреть больше 7 знаков конечно.
З.ы. 0.7 и 0.07 и 500000000.0001 и т.д. все считает правильно.
З.з.ы. а вот с 500000000.9991 справляется хуже. Но на практике форексной это вряд ли важно.
Но на практике форексной это вряд ли важно.
зависит от задач, если для торговых приказов, то эта задача вообще не имеет смысла - цены нормализуются до Digits, а лоты относительно минимального лота
если задачи с мат.моделированием, то возможно и пригодится, ну и выше писали, что для красивого вывода double была задача в точности
зависит от задач, если для торговых приказов, то эта задача вообще не имеет смысла - цены нормализуются до Digits, а лоты относительно минимального лота
если задачи с мат.моделированием, то возможно и пригодится, ну и выше писали, что для красивого вывода double была задача в точности
Ну разумеется не нейросети писать =)) а скажем удобно хранить цены/лоты/деньги в виде 4-байтового целого с десятичным показателем, сокращая объем данных в 2 раза.
не корректно double сравнивать на равенство, тем более задача в точности до знака заключается
посмотрите в МТ4 файл stdlib.mq4, там был пример правильно сравнения double
CompareDoubles()
ЗЫ: по сабжу вот статья была https://www.mql5.com/ru/articles/1561
Так задача и стоит - определить на сколько знаков x нормализован. Так что все нормально. Если не считать, что не лень было такую лестницу писать.
Если не считать, что не лень было такую лестницу писать.
Можно и без лестницы, только выполняется на 10% дольше.
Можно и без лестницы, только выполняется на 10% дольше.
Вот это вот: f/=0.0000001; вызывает сомнения.