— Вот тебе пару интересных вещей про вещественные (они же дробные) типы. Начнём вот с этого примера:

float f = 3 / 5;

В результате данного вычисления значение f будет равно… нулю!

— Мне Риша что-то подобное рассказывал…

— Да? Вот и отлично. Повторение – мать учения.

— На самом деле тут нет никакой ошибки. В делении участвуют два целых числа, поэтому происходит деление нацело, остаток от деления просто отбрасывается. Чтобы такого не было, нужно, чтобы хотя бы одно из двух чисел, участвующих в делении, было дробным.

— Если одно из чисел дробное, то сначала второе число будет преобразовано к дробному типу, а затем будет выполнено деление.

— Вот как можно решить данную проблему:

Запись дробного числа:
float f = 3.0f / 5.0f;
float f = 3.0f / 5;
float f = 3 / 5.0f;

— А если в делении участвуют переменные?

— Тогда – вот так:

Преобразование целой переменной в вещественную
int a = 3, b = 5;
float f = (a * 1.0f) / b;
int a = 3, b = 5;
float f = a / (b * 1.0f);
int a = 3, b = 5;
float f = (a * 1.0f) / (b * 1.0f);
int a = 3, b = 5;
float f = (float) a / b;

— Не очень красиво. А что, нет какой-нибудь более удобной операции деления?

— Нет. Это все, что есть.

— Ну, ок, думаю, проблем не будет.