1. Тип double
Для роботи з дійсними (дробовими) числами в Java використовується тип double. У пам'яті він займає 8 байт (вдвічі більше, ніж тип int) і може зберігати значення в діапазоні -1.7*10308 до +1.7*10308. Для порівняння: тип int може зберігати значення в діапазоні -2*109 до +2*109.
У дійсних числах дробова частина записується після крапки. Наприклад, 123.456, або 2.5, або 100.00 чи 0.01. Такі числа ще називають числами з плаваючою крапкою — floating point number – комп'ютерна назва для дійсних чисел.
До речі, окрім типу double є ще дійсний тип float (розміром усього 4 байти). Його назва якраз і походить від floating point. Назва ж double походить від double float. Тип double вдвічі більший, ніж float: 8 байт проти 4. Його ще називають дійсне число подвійної точності.
2. Створення змінної типу double
Тип double використовується для зберігання дійсних чисел. Щоб створити в коді змінну, яка буде здатна зберігати дійсні числа, потрібно скористатись командою:
double ім'я;
double
Де ім'я — це ім'я змінної. Приклади:
| Команда | Опис |
|---|---|
|
Створюється дійсна змінна price |
|
Створюється дійсна змінна weight |
|
Створюється дійсна змінна lightSpeed |
Так само, як і з типом int, можна використовувати короткий запис для створення кількох змінних типу double:
double ім'я1, ім'я2, ім'я3;
double
І навіть одразу присвоювати їм значення:
double ім'я1 = значення1, ім'я2 = значення2, ім'я3 = значення3;
double
Приклади:
| Команда | Примітка |
|---|---|
|
У змінній зберігається значення 5.0 |
|
У змінній зберігається значення 2.0 |
|
3. Присвоєння цілих і дійсних чисел
Було б погано, якби цілі числа можна було присвоювати тільки змінним типу int, а дійсні — тільки змінним типу double. Хотілося б мати можливість перетворювати одні числа на інші. І в Java така можливість є.
По-перше, змінним типу double можна присвоювати як дійсні, так і цілі числа. При присвоєнні цілих чисел вони просто перетворюються на дійсні. Хоча іноді при цьому можлива незначна втрата точності.
| Команда | Примітка |
|---|---|
|
У змінній зберігається значення 5.0 |
|
У змінній зберігається значення 2.0 |
|
У змінній x зберігається значення 1000000.0 |
По-друге, якщо в якому-небудь виразі беруть участь ціле та дійсне число, ціле спочатку перетворюється на дійсне і лише потім взаємодіє з іншим дійсним числом.
| Команда | Примітка |
|---|---|
|
У змінній x зберігається значення 5000.0 |
|
На екран буде виведено число 10 |
|
На екран буде виведено число 10.0 |
І нарешті, є можливість присвоювати змінним типу int дійсні числа. Дробова частина числа при цьому відкидається — число округлюється вниз до цілого.
Також компілятор вимагає, щоб цей факт програміст задокументував явно (щоб інші програмісти розуміли, що тут відбувається відкидання дробової частини). Загальний вигляд цього виразу в коді такий:
цілочисельна_змінна = (int)(дійсне_число);
int дійсного числа
Приклади:
| Команда | Примітка |
|---|---|
|
У змінній x зберігається значення 5 |
|
У змінній x зберігається значення 5 |
|
У змінній x зберігається значення 11 |
4. Ділення цілих та дійсних чисел у Java
При діленні цілого числа на ціле залишок завжди відкидається. Як же тоді, наприклад, поділити 5 на 2, щоб отримати 2.5?
Спочатку здається, що правильний варіант такий:
double d = 5 / 2;
Однак не все так просто. Справа в тому, що Java-машина спершу обчислить значення виразу 5 / 2 і лише потім присвоїть результат змінній d. А ділення 5 / 2 виконається цілою частиною. Тобто d буде містити 2 або, якщо бути точнішим, 2.0
Правильний варіант такий: хоча б одне з чисел, яке бере участь у діленні, потрібно записати як дійсне (тобто з крапкою):
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
У будь-якому з цих виразів d буде містити значення 2.5
А що ж робити зі змінними? Що як у нас є такий код:
int a = 5;
int b = 2;
double d = a / b;
Тут є хитре (та очевидне) рішення — змусити Java-машину перетворити змінні на дійсні, помноживши їх на дійсну одиницю — 1.0
int a = 5;
int b = 2;
double d = a * 1.0 / b;
Зверни увагу, що операції множення та ділення мають рівний пріоритет, і вони виконуються зліва направо, тому важливо, де саме ми множимо на дійсну одиницю.
Приклади:
| Команда | Порядок виконання | Результат |
|---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ