double dsumm;
Renat Akhtyamov:
double dsumm;
double dsumm;
Если так, то на экране увидите 1 2 2
Reactor555:
Случайно наткнулся вот на такую странную вещь. Очень простой код...
Случайно наткнулся вот на такую странную вещь. Очень простой код...
summ = 3;
dsumm = 3;
Alert ( ceil ( 3 / 2 ) );
Alert ( ceil ( summ / 2 ) );
Alert ( ceil ( dsumm / 2 ) );
Как вы думаете, что будет выведено на экран? Сразу скажу, что не 2 2 2, хотя по логике должно быть именно это.
Смотрите, что происходит:
1) сначала рассчитывается выражение в скобках: результат для 3 / 2 будет равен 1 (это происходит потому, что 3 и 2 трактуются как целые числа);
2) после этого число преобразуется в double и передаётся в ceil().
Если вы хотите использовать double, а не int, то просто записывайте числа в формате с плавающей запятой.
Alert ( ceil ( 3.0 / 2.0 ) );
Reactor555:
Если так, то на экране увидите 1 2 2
да ладно
так тогда
double summ=3.0;
double dsumm=3.0;
;)
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Alert ( ceil ( dsumm / 2 ) );
Как вы думаете, что будет выведено на экран? Сразу скажу, что не 2 2 2, хотя по логике должно быть именно это. Разум так же подсказывает, что все три цифры должны быть одинаковые... Но это не так !!! Добавим еще пару строк кода и тогда все станет ясно, что я хочу сказать... (честно говоря я в шоке от своего открытия)
int dsumm;
summ = 3;
Alert ( ceil ( dsumm / 2 ) );
И на экране мы получим 1 2 1
В описании функции ceil написано, что ее аргумент должен быть double. Но согласитесь, выглядит это все как-то очень странно.