Привет! Такая ситуация: есть число 1.5 (например), как сделать что бы советник использовал только целую его часть, то есть 1? Пробовал NormalizeDouble(count,0); для чисел 1.1-1.4 работает отлично, а вот 1.5-1.9 округляет до 2... возможно есть способ избежать округления? Помогите добрые люди!
- Баг МТ4 - разработчикам посвящается
- Ошибки, баги, вопросы
- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Maksim Neimerik:
Привет! Такая ситуация: есть число 1.5 (например), как сделать что бы советник использовал только целую его часть, то есть 1? Пробовал NormalizeDouble(count,0); для чисел 1.1-1.4 работает отлично, а вот 1.5-1.9 округляет до 2... возможно есть способ избежать округления? Помогите добрые люди!
Привет! Такая ситуация: есть число 1.5 (например), как сделать что бы советник использовал только целую его часть, то есть 1? Пробовал NormalizeDouble(count,0); для чисел 1.1-1.4 работает отлично, а вот 1.5-1.9 округляет до 2... возможно есть способ избежать округления? Помогите добрые люди!
double a = 1.9; int b = int(a); // 1
Ihor Herasko:
Жесть!)) И все?
Maksim Neimerik:
Жесть!)) И все?
Жесть!)) И все?
Можно заморочливее ))
double a = 1.9; int b = int(MathFloor(a));
Nikolai Semko:
все, если число положительное.
С отрицательным то же самое. А вот пример с MathFloor() даст уже другой результат.
Ihor Herasko:
Большое спасибо!
С отрицательным то же самое. А вот пример с MathFloor() даст уже другой результат.
Ihor Herasko:
С отрицательным то же самое. А вот пример с MathFloor() даст уже другой результат.
для положительных и отрицательных, если лежат в диапазоне INT_MIN ... INT_MAX:
int Ceil (double x) { return (x-(int)x>0)?(int)x+1:(int)x; } int Round(double x) { return (x>0)?(int)(x+0.5):(int)(x-0.5);} int Floor(double x) { return (x>0)?(int)x:((int)x-x>0)?(int)x-1:(int)x; }Не заметил у Вас функции MathFloor. Она ни к чему.
Поэтому для большинства случаев (a положительное не больше INT_MAX) (int)a достаточно.
Скажите, а как правильно
double a = 1.234; int b = (int)a; // или int b = int(a);
Сергей Таболин:
Скажите, а как правильно
Без разницы.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь