50.0 / 45.0
Не, так не пойдет. У меня в программе две целочисленные переменные. Я в них считаю штучки, по этому логично, что переменные целочисленные. Но потом мне нужно одни штучки поделить на другие, что бы найти проценты. Которые, понятно, будут не целочисленные.
В си можно использовать приведение типов, написал что то типа double ( 5 / 3) и результат будет double.
В Си++ double(5 / 3) = 1.0
А C-style cast выглядит по-другому.
(double)res
Напишите так:
Print(1.0*Первая_Штучка/Вторая_Штучка);
Сложно найти человека который в свое время не наступил на эти грабли) А вообще морока конечно, приведешь к дабл для того же деления, забудешь, засада со сравнением.... Как на войне, глаз да глаз)
А вообще мне кажется, что когда разрабатывался язык MQL, самая сложная на нем программа представлялась на уровне того же MACD_Sample, и подобными ньюансами особо не заморачивались. А теперь выясняется, что "язык неплохо бы подтянуть" до уровня того же СИ, с отладчиками, структурами и тд, для соответствия к предявляемым к нему требованиям. Но создание подобной среды само по себе мегазадача, а разработчикам МТ "предлагается" ее решить в качестве сопутствующей продукта при создании новой версии терминала...)
Мелочь, а приятно
int a = 5;
int b = (double)3; // Все Ок
double c = (double)a/b; // Все Типа Ок
Print(c); // Будет Единица !! :-)
if((double)( a / b) > 1) { // Ошибка компиляции!
Print("Ok");
}
if( (double)a / b > 1) { // Ошибка компиляции!
Print("Ok");
}
Сложно найти человека который в свое время не наступил на эти грабли) А вообще морока конечно, приведешь к дабл для того же деления, забудешь, засада со сравнением.... Как на войне, глаз да глаз)
А вообще мне кажется, что когда разрабатывался язык MQL, самая сложная на нем программа представлялась на уровне того же MACD_Sample, и подобными ньюансами особо не заморачивались. А теперь выясняется, что "язык неплохо бы подтянуть" до уровня того же СИ, с отладчиками, структурами и тд, для соответствия к предявляемым к нему требованиям. Но создание подобной среды само по себе мегазадача, а разработчикам МТ "предлагается" ее решить в качестве сопутствующей продукта при создании новой версии терминала...)
Да это всё понятно. Обидно время терять на такие мелочи. Они ведь не описаны в доке.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Полдня, полдня искал ошибку в программе, а оказалось...
Отчаялся, пишу в программе "Print( DoubleToStr( 50 / 45, 8));", ответ оказывается 1.000..., а не 1.1111... как я думал.Оказывается, если делятся целочисленные, то результат то же целочисленный, даже если переменная куда нужно записать результат double.
И что теперь делать? есть какой нибудь способ заставить его делить правильно?