//Есть несколько переменных
int i1 = 1;
int i2 = 2;
int i3 = 3;
int i4 = 4;
//Надо посчитать:
float f = (float)i1 / (float)i2 + (float)i3 / (float)i4;
Как дать понять компилятору, что при вычислении f все инты считать float? , чтобы не использовать приведение типов.
П.С. Не предлагать использовать вместо int float. Надо именно так.
Здравствуйте, jollyck, Вы писали:
J>float f = i1 / (float)i2 + i3 / (float)i4;
J>Как дать понять компилятору, что при вычислении f все инты считать float? ,
Достаточно по разу в каждой операции
J>чтобы не использовать приведение типов.

Тогда так:
J>float f = i1 / Convert.ToSingle(i2) + i3 / Convert.ToSingle(i4);
J>П.С. Не предлагать использовать вместо int float. Надо именно так.
Зачем?
Здравствуйте, jollyck, Вы писали:
J>Как дать понять компилятору, что при вычислении f все инты считать float? , чтобы не использовать приведение типов.
float f = i1 * 1F / i2 + i3 * 1F / i4;
Здравствуйте, nikov, Вы писали:
J>>Как дать понять компилятору, что при вычислении f все инты считать float? , чтобы не использовать приведение типов.
N> float f = i1 * 1F / i2 + i3 * 1F / i4;
Хороший оптимизатор все равно заменит это на приведение типов. А без оптимизации это добавляет лишние 2 операции умножения, и увеличивает время выполнения процентов на 25.
Здравствуйте, jollyck, Вы писали:
J>J>//Есть несколько переменных
J>int i1 = 1;
J>int i2 = 2;
J>int i3 = 3;
J>int i4 = 4;
J>//Надо посчитать:
J>float f = (float)i1 / (float)i2 + (float)i3 / (float)i4;
J>
J>Как дать понять компилятору, что при вычислении f все инты считать float? , чтобы не использовать приведение типов.
ИМХО, лучше так и оставить — сразу понятно что делается. Так как в итоге (даже при всяких ухищрениях) приведение каждого int во float будет выполнено в любом случае, а вы можете только ухудшить объем операций и время выполнения.
А еще лучше использовать тип double — это родной тип для сопроцессора, и обрабатывается быстрее чем float.