Числа с плавающей точкой. Тип double

В первом уроке мы рассмотрели целочисленный (int) тип данных. Все операции, которые можно проводить с этими числами, также целочисленные (а деление производится с остатком).

Для проведения операций с дробными числами обычно используется тип double:

double t = 36.6;
System.out.println(t + 0.2); // 36.8

Чтобы в результате деления не отбрасывалась дробная часть, нужно записать делимое или делитель как double, а не int. Это можно сделать, представив число как десятичную дробь (например, 7.0) или с буквой d на конце (например, 7d):

System.out.println(7/4);
// целые числа по умолчанию int. 
// Поэтому в результате деления отбросится дробная часть и выведется 1

System.out.println(7.0/4);
// представляем 7 как десятичную дробь, выводится результат 1.75

System.out.println(7d/4);
// представляем 7 как число типа double, результат — 1.75

System.out.println(7/4d);
// представляем 4 как число типа double, результат — 1.75

Числовые значения, которые присваиваются переменным,называются литералами. 7 и 4 — это литералы типа int, а 36.6, 7.0, 7d, 4d — литералы типа double.

В числовых литералах допускается разделять разряды знаком подчёркивания, например, сорок тысяч рублей можно записать как 40000 или 40_000, а в копейках — как 4000000 или 40_000_00 (хоть 4_0_0_0_0_0_0, но не надо так).

Если в арифметическом выражении попадаются данные разных типов, они приводятся к тому, у которого больший диапазон значений, то есть в выражении 7.0 / 4 данные имеют типы double и int соответственно, но 4 приводится к типу double перед операцией деления.

Следует учитывать, что вычисления с плавающей точкой имеют некоторую погрешность, причём различающуюся на разных компьютерах. Поэтому, если нужно провести денежные вычисления, используют выражения с целым количеством копеек, а не дробным количеством рублей. Например, если нужно вычислить выражение 1 000 рублей/7, это считается как 100 000 копеек/7, чтобы погрешность на разных компьютерах не различалась.

0.1 + 0.2 == 0.30000000000000004? Добро пожаловать в секретный интернет для роботов!

Задачи к уроку Комментарии к уроку

Деление чисел с плавающей точкой

Найдите дробный результат деления 40 на 13, 65 на 17, 98 на 11. Выведите результаты.

{{ message.data }}

Зарплата

Зарплатный фонд фирмы составляет 420 000 рублей. В штате фирмы 9 сотрудников. Какова зарплата одного сотрудника (в копейках), если все получают одинаково? Сколько останется нераспределённых денег (в копейках)?

{{ message.data }}

Сообщить об ошибке