Кто-то явно считать не умеет... :( - страница 2

 

Оригинал был таким

period_2 = (int)MathRound(period_1 / 100 * period_1 + period_1);
Comment(period_2);
 
Renat Fatkhullin:
Все константные выражения типа (54 / 100 * 54 + 54) считаются на этапе компиляции.

Было бы странно, если бы было наоборот )) Если заменить числовые константы переменными, будет считаться ведь строго слева направо?

double d54 = 54, d100 = 100, res;
res = d54 / d100 * d54 + d54; 
 
Aleksey Semenov:
не мпомню точно, но кто-то сказал что можно в ворнинги смотреть на ошибки приведения типов (possible loss of data due to type conversion), говорят #property strict  в этом помогает и никогда не использовать полностью константные выражения - для этого есть калькулятор

Наверное бабка в очереди сказала.

1. Варнинги смотреть и исправлять нужно всегда и любые. В любой программерской конторе руки отпилят, если на git-сервер (у нас Хранилище) вывалишь мусор с варнингами.

2. #property strict  нужен только в MQL4, он говорит, что надо компилировать код в нормальном стиле, а не в том, что был до МТ4 build 600.

3. Константные выражения никому не мешают - для этого есть компилятор )) (см. пост Рената выше) 

 
  1. MQL5
  2. В том то и дело, что никаких "ворнингов" нет.
 
Сергей Таболин:
  1. MQL5
  2. В том то и дело, что никаких "ворнингов" нет.

Все же уже объяснили. Калькулятор считает в формате double, а у вас в посте #1 расчет в целочисленных константах. Никаких варнингов и не будет, компилятор тут никаких несоответствий не видит.

 
Alexey Volchanskiy:

Все же уже объяснили. Калькулятор считает в формате double, а у вас в посте #1 расчет в целочисленных константах. Никаких варнингов и не будет, компилятор тут никаких несоответствий не видит.

MathRound(

 это double!

Всё что внутри должно автоматом переводиться в дабл. А уже результат я привожу к инту. И я точно понимаю что будет с результатом!

 
Сергей Таболин:

 это double!

Всё что внутри должно автоматом переводиться в дабл. А уже результат я привожу к инту. И я точно понимаю что будет с результатом!

Если понимаете - зачем разговор?
 
zvezdocheet:
Если понимаете - зачем разговор?

А затем, что "внутри" всё переводится не в дабл...

 
Сергей Таболин:

А затем, что "внутри" всё переводится не в дабл...

Теперь Вы вся выяснили? А в документации то же самое?

 
zvezdocheet:

Теперь Вы вся выяснили? А в документации то же самое?

Нет. Я не понимаю почему функция выдающая результат как дабл, не переводит передаваемые ей аргументы (или прописанные) в тот же дабл? Почему у неё внутри 54/100 == 0 ?