Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 474

 
Alexey Viktorov:
Это ещё не всё... https://www.mql5.com/ru/forum/66827
Странный мил человек... Ну да  ладно...
 
Как узнать реальное значение переменной типа double ? Дело в том, что через принт вылетают тысячные иногда - сама переменная формируется из текстовой строки, но проходит процедуру округления.
 
-Aleks-:
Как узнать реальное значение переменной типа double ? Дело в том, что через принт вылетают тысячные иногда - сама переменная формируется из текстовой строки, но проходит процедуру округления.
Гм. А Вам для чего?
 
Alexey Kozitsyn:
Гм. А Вам для чего?
Для выявления ошибки в расчетах :)
 
-Aleks-:
Для выявления ошибки в расчетах :)
Вы сравнить хотите несколько значений типа double?
 
Alexey Kozitsyn:
Вы сравнить хотите несколько значений типа double?
Не совсем... есть предположение, что числа имеют не всегда целое значение 4=3,99999999999999999 и после математических действий образуется неточность после округления.
 

Подскажите, требуется отправка сообщений на email с терминала Metatrader 4, причем таким образом что бы делался скриншот текущего чарта и вкладывался в середину сообщения. Пример:

Был сигнал на покупку на паре EurUsd

<скриншот09122015_eurusd.png>

Доп информация об открытии.

Скажите как реализовать такое? Может есть пример или что то похожее, что можно переделать. Спасибо!
 
-Aleks-:
Не совсем... есть предположение, что числа имеют не всегда целое значение 4=3,99999999999999999 и после математических действий образуется неточность после округления.

Даже если неточность и появляется, используйте NormalizeDouble(). Устанавливайте нужную Вам точность для расчетов. Для этого эта функция и предназначена. 

Там в примере, похоже, Ваш случай описан:

Нужно иметь в виду, что нормализованное число при выводе в Журнал с помощью Print() может содержать большее количество знаков после запятой, чем вы ожидаете. Например, 

DoubleToString(a,8)=76.67100000

Print(76.671)=76.67100000000001

 
Alexey Kozitsyn:

Даже если неточность и появляется, используйте NormalizeDouble(). Устанавливайте нужную Вам точность для расчетов. Для этого эта функция и предназначена. 

Там в примере, похоже, Ваш случай описан:

Да - описан, да - использую - вопрос как раз в том, как не через Print и вообще string получить данные для анализа :)
 
-Aleks-:
Да - описан, да - использую - вопрос как раз в том, как не через Print и вообще string получить данные для анализа :)

С помощью все той же NormalizeDouble(). Получаете число типа double. Нормализованное. Просто Print() выводит так. 

Вот здесь написано как правильно сравнивать: https://www.mql5.com/ru/docs/basis/types/double

Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
  • www.mql5.com
Основы языка / Типы данных / Вещественные типы (double, float) - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Причина обращения: