Вам просто нужно сделать
float f = 5.0f/2;
В своем коде, 5
и 2
являются int
s, поэтому в 5/2
оператор /
оператор целочисленного деления; результат всегда будет целым числом, в данном случае 2
. Только после этого он преобразуется в float
, давая 2.0
.
Вам необходимо выполнить деление с плавающей запятой, поэтому по крайней мере один из операндов должен иметь тип с плавающей точкой. Вы могли бы просто написать 5.0
, без f
, но по умолчанию будет иметь тип double
, и результат будет преобразован в float
- преобразование, которое может вызвать проблемы (не здесь для этих конкретных постоянных значений, но все же, лучше используйте правильный тип в первую очередь).
Вы выполняете целочисленное деление * до * литье в 'float', так что вы литье результата целочисленного деления. Если вы хотите выполнять разделение с плавающей запятой, вам необходимо в первую очередь разделить значения с плавающей запятой. – jamesdlin