как убрать предупреждение?

 

Помогите пожалуйста убрать часть предупреждений:

possible loss of data due to type conversion

ругается на эти:
               x3 = (тут курсор)x2 - h1 * Vx; 
               y3 = (тут курсор)y2 - h1 * Vy; 
               x4 = (тут курсор)x2 - h2 * Vx + w * nx; 
               y4 = (тут курсор)y2 - h2 * Vy + w * ny; 
               x5 = (тут курсор)x2 - h2 * Vx - w * nx; 
               y5 = (тут курсор)y2 - h2 * Vy - w * ny; 

Весь код

               int  h1 = 30, h2 = 50, w = 18;
               ObjectDelete(ZigzagName);
               ZigzagIndex -= 2;
               ObjectSet(name + (string)ZigzagIndex, OBJPROP_SELECTED, false); // Снять выделение с объекта
               int x1, x2, x3, x4, x5, y1, y2, y3, y4, y5;
               double V, Vx, Vy, nx, ny;
               datetime t1 = (int)ObjectGet(name + (string)ZigzagIndex, OBJPROP_TIME1);
               datetime t2 = (int)ObjectGet(name + (string)ZigzagIndex, OBJPROP_TIME2);
               double p1 = ObjectGet(name + (string)ZigzagIndex, OBJPROP_PRICE1);
               double p2 = ObjectGet(name + (string)ZigzagIndex, OBJPROP_PRICE2);
               ChartTimePriceToXY(0, 0, t1, p1, x1, y1);
               ChartTimePriceToXY(0, 0, t2, p2, x2, y2);
               Vx = x2 - x1; 
               Vy = y2 - y1; 
               V  = MathSqrt(Vx * Vx + Vy * Vy); 
               Vx = Vx / V; 
               Vy = Vy / V;
               nx = Vy; 
               ny = -Vx; 
               x3 = x2 - h1 * Vx; 
               y3 = y2 - h1 * Vy; 
               x4 = x2 - h2 * Vx + w * nx; 
               y4 = y2 - h2 * Vy + w * ny; 
               x5 = x2 - h2 * Vx - w * nx; 
               y5 = y2 - h2 * Vy - w * ny; 
 
Какого типа переменные x3, x2, h1, Vx?
 
Dmitry Fedoseev:
Какого типа переменные x3, x2, h1, Vx?

я не знаю, а могли бы вы написать все возможные данные, которые можно написать, чтобы посмотреть пропадёт ли предупреждение или нет
Тот код что выше он единственный

 
например я ищу: Vx но он больше ни де в коде не применяется, ни де не числется, только тут
 
utock:

я не знаю, а могли бы вы написать все возможные данные, которые можно написать, чтобы посмотреть пропадёт ли предупреждение или нет
Тот код что выше он единственный

Все типы здесь.

Надо преобразовать типы в формуле, что-то типа:

x3 = x2 - (double)h1 * Vx;  

Но отсюда не видать.

 

По какой линии вы получаете предупреждение? поместите эту строку здесь

 
utock:

Помогите пожалуйста убрать часть предупреждений:

possible loss of data due to type conversion

ругается на эти:

Весь код

x3 = (тут курсор)x2 - h1 * Vx; 

Если в выражении которое стоит с права, есть хотя бы один double (а это  Vx), то результат расчета который будет в памяти(в регистре) будет double типа.

А когда этот результат присваивается к типу int (поле x3), то из результата будет выброшена дробная часть.

Если хотите не получить предупреждение то напишите так:

x3 = int(x2 - h1 * Vx); 
Причина обращения: