Дробные числа и операции (double)
Дробные числа нужны, когда важна часть после запятой: длина, время, скорость, площадь, средний балл и т.п.
В Java для таких значений обычно используют тип double.
Типичная схема: считать числа c дробной частью, посчитать по формуле и вывести результат.
Краткая сводка
Переменная дробного типа объявляется так:
Примеры:
Основные операции над double те же, что и для int:
- сложение:
+ - вычитание:
- - умножение:
* - деление:
/
Остаток % с double почти не нужен в базовых задачах, достаточно знать, что он существует.
Тип double
double хранит числа с дробной частью (вещественные числа).
Примеры:
Для физических величин (скорость, путь, время), процентов, средних значений обычно используют именно double.
Деление double
При делении double / double результат тоже double, дробная часть сохраняется:
Если делитель или делимое — int, а другой операнд double, выражение автоматически считается в double:
int a = 7;
int b = 3;
double q1 = a / b; // 2.0 (целочисленное деление, результат потом в double)
double q2 = a / 3.0; // 2.3333... (одно из чисел double)
double q3 = (double)a / b; // тоже 2.3333...
Важно: если оба операнда целые (int), сначала выполняется целочисленное деление, а уже потом результат превращается в double.
Чтобы получить настоящий дробный результат, хотя бы один операнд должен быть double (например, 3.0 вместо 3).
Смешанные выражения int и double
Когда в выражении встречаются и int, и double, Java автоматически «поднимает» результат к double.
Пример:
Частый приём: привести одно из чисел к double, чтобы получить дробный результат:
int sum = 7;
int count = 2;
double avg1 = sum / count; // 3.0 (целая часть)
double avg2 = sum / (double)count; // 3.5 (настоящее среднее)
double avg3 = sum / 2.0; // 3.5
Округление и форматированный вывод
Иногда результат нужно округлить или вывести с определённым количеством знаков после запятой.
Округление:
double x = 3.56;
long r1 = Math.round(x); // 4
double f = Math.floor(x); // 3.0 (вниз)
double c = Math.ceil(x); // 4.0 (вверх)
Форматированный вывод через printf:
double x = 3.14159265;
System.out.printf("x = %.2f%n", x); // x = 3.14
System.out.printf("x = %.4f%n", x); // x = 3.1416
%.2f — число с плавающей точкой с 2 знаками после запятой,
%.4f — с 4 знаками после запятой.
Типичные шаблоны
Средняя скорость
double distance = in.nextDouble(); // путь
double time = in.nextDouble(); // время
double speed = distance / time;
System.out.println(speed);
Среднее арифметическое
double a = in.nextDouble();
double b = in.nextDouble();
double c = in.nextDouble();
double avg = (a + b + c) / 3.0;
System.out.println(avg);
Процент от числа
double value = in.nextDouble();
double p = in.nextDouble(); // процент
double part = value * p / 100.0;
System.out.println(part);
Перевод градусов в радианы
Что нужно запомнить
Для чисел с дробной частью в Java обычно используют тип double:
Выражение с int и double считается в типе double. Чтобы деление было «настоящим» дробным, хотя бы один операнд должен быть double.
Для вывода аккуратных дробных результатов удобно использовать Math.round, Math.floor, Math.ceil и форматированный вывод printf с %.2f, %.3f и т.п.