int -> float
От: jollyck  
Дата: 21.10.07 11:56
Оценка:
//Есть несколько переменных
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. Надо именно так.
Re: int -> float
От: _FRED_ Черногория
Дата: 21.10.07 12:11
Оценка:
Здравствуйте, 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. Надо именно так.


Зачем?
Help will always be given at Hogwarts to those who ask for it.
Re: int -> float
От: nikov США http://www.linkedin.com/in/nikov
Дата: 21.10.07 12:21
Оценка: 6 (1)
Здравствуйте, jollyck, Вы писали:

J>Как дать понять компилятору, что при вычислении f все инты считать float? , чтобы не использовать приведение типов.


        float f = i1 * 1F / i2 + i3 * 1F / i4;
Re[2]: int -> float
От: Ravlyk Австралия http://stitcharteasy.com
Дата: 23.10.07 07:49
Оценка:
Здравствуйте, nikov, Вы писали:

J>>Как дать понять компилятору, что при вычислении f все инты считать float? , чтобы не использовать приведение типов.


N>
        float f = i1 * 1F / i2 + i3 * 1F / i4;


Хороший оптимизатор все равно заменит это на приведение типов. А без оптимизации это добавляет лишние 2 операции умножения, и увеличивает время выполнения процентов на 25.
Re: int -> float
От: Ravlyk Австралия http://stitcharteasy.com
Дата: 23.10.07 07:56
Оценка:
Здравствуйте, 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.
Re[2]: int -> float
От: Mab Россия http://shade.msu.ru/~mab
Дата: 23.10.07 08:05
Оценка:
Здравствуйте, Ravlyk, Вы писали:

R>А еще лучше использовать тип double — это родной тип для сопроцессора,

Родной в каком отношении?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.