Типы переменных (int, double.....)

 
Подскажите пожалуйста, если производить действия умножения и деления, то переменные обязательно должны быть типа double ?
Если так, то почему, в стандартных индикаторах этот принцип не соблюдается?!
Например, в "ZigZag"-е, переменная типа int (extern int ExtDeviation=5;)
умножается на point, переменная, как я понимаю, - типа double?
if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
 
При умножении int на double будет double. При делении от int останется только целая часть, но останется int.
Так кажется. Может кто поправит?
 
При умножении int на double будет double. При делении от int останется только целая часть, но останется int.
Так кажется. Может кто поправит?

Всё правильно ;)
Чтоб получить точный результат деления, надо double.

На самом деле, лучше перестраховаться и все переменные, с которыми будут производиться умножение/деление, объявлять как double =)
Причина обращения: