int Kolvo_Barov1 = 288; double proc = 0; proc = 100.0 / Kolvo_Barov1;
Форум по трейдингу, автоматизированным торговым системам и тестированию торговых стратегий
Фернандо Каррейру , 2021.07.23 22:20
Пожалуйста, поймите, что деление на 100 или деление на 100,0 даст совершенно разные результаты.
В первом случае 100 считается целочисленной константой-литералом и поэтому будет выполнять целочисленное деление, которое усекает десятичные значения.
В последнем случае 100.0 будет считаться константой с плавающей запятой и будет выполнять деление с плавающей запятой, сохраняя десятичные значения.
Это основная причина проблем, с которыми вы сталкиваетесь. Поэтому, чтобы предотвратить это, либо используйте литеральную константу с плавающей запятой, либо приведите переменную к типу (double).
Пример:
Print ( "90 / 100 = " , 90 / 100 ); Print ( "90 / 100.0 = " , 90 / 100.0 ); Print ( "90.0 / 100 = " , 90.0 / 100 ); Print ( "90.0 / 100.0 = " , 90.0 / 100.0 );2021.07 . 23 21 : 26 : 57.060 TestCopy EURUSD,H1: 90 / 100 = 0 2021.07 . 23 21 : 26 : 57.060 TestCopy EURUSD,H1: 90 / 100.0 = 0.9 2021.07 . 23 21 : 26 : 57.060 TestCopy EURUSD,H1: 90.0 / 100 = 0.9 2021.07 . 23 21 : 26 : 57.060 TestCopy EURUSD,H1: 90.0 / 100.0 = 0.9
Форум по трейдингу, автоматизированным торговым системам и тестированию торговых стратегий
MT4 принудительно переводит двойные значения в int
Фернандо Каррейру , 2022.03.23 17:53
Приведение типов к плавающей запятой — Приведение типов - Типы данных - Основы языка - Справочник MQL4
double Average = ( double ) Bars / Found; double Average = Bars / ( double ) Found; double Average = ( double ) Bars / ( double ) Found;
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования