- •Методичні вказівки
- •Частина іii. Java
- •1 Лабораторна робота № 1 Знайомство з Java 7
- •2 Лабораторна робота № 2 Створення графічного інтерфейсу 24
- •2.1 Мета роботи 24
- •3 Лабораторна робота № 3 Об’єктно-орієнтоване програмування в Java 33
- •3.1 Мета роботи 33
- •1Лабораторна робота № 1 Знайомство з Java
- •1.1Мета роботи
- •1.2Основні теоретичні відомості
- •1.2.1Константи Цілі Дійсні Символи Рядки
- •1.2.2Імена
- •1.2.3Примітивні типи даних і операції
- •1.2.4Дійсні типи
- •1.2.5Операції присвоювання
- •1.2.6Оператори
- •1.2.7Масиви
- •1.3Завдання до роботи
- •1.4.2 Завдання до роботи.
- •1.5Контрольні запитання
- •2Лабораторна робота № 2 Створення графічного інтерфейсу
- •2.1Мета роботи
- •2.2Основні теоретичні відомості
- •2.3Завдання до роботи
- •2.4.2 Завдання до роботи.
- •2.5Контрольні запитання
- •3.2.2Абстрактні методи й класи
- •3.2.3Остаточні члени й класи
- •3.2.4Клас Object
- •3.2.5Конструктори класу
- •3.2.6Операція new
- •3.2.7Статичні члени класу
- •3.2.8Клас Complex
- •3.3Завдання до роботи
- •3.4.2 Завдання до роботи.
- •3.5Контрольні запитання
- •4Лабораторна робота № 4 Пакети й інтерфейси
- •4.1Мета роботи
- •4.2Основні теоретичні відомості
- •4.2.1Права доступу до членів класу
- •4.2.2Імпорт класів і пакетів
- •4.2.3Інтерфейси
- •4.3Завдання до роботи
- •4.4.2 Завдання до роботи.
- •4.5Контрольні запитання
- •5Лабораторна робота № 5 Класи-оболонки
- •5.1Мета роботи
- •5.2Основні теоретичні відомості
- •5.2.1Клас Boolean Клас Character
- •5.2.2Клас Biglnteger
- •5.2.3Клас Big Decimal
- •5.3Завдання до роботи
- •5.4.2 Завдання до роботи.
- •5.5Контрольні запитання
- •6Лабораторна робота № 6 Робота з рядками
- •6.1Мета роботи
- •6.2Основні теоретичні відомості
- •6.3Завдання до роботи
- •6.4.2 Завдання до роботи.
- •6.5Контрольні запитання
- •7.2.2Клас Stack Клас Hashtable Клас Properties
- •7.2.3Інтерфейс Collection
- •7.2.4Інтерфейс ListIterator
- •7.2.5Колекції
- •7.3Завдання до роботи
- •7.4.2 Завдання до роботи.
- •7.5Контрольні запитання
- •8.2.2Локальні установки
- •8.2.3Робота з датами й часом
- •8.2.4Одержання випадкових чисел
- •8.2.5Взаємодія із системою
- •8.3Завдання до роботи
- •8.4.2 Завдання до роботи.
- •8.5Контрольні запитання
- •Література
5.2.3Клас Big Decimal
Клас BigDecimal розташований у пакеті java.math.
Кожний об'єкт цього класу зберігає два цілочисельних значення: мантису дійсного числа у вигляді об'єкту класу BigInteger, і ненегативний десятковий порядок числа типу int.
Наприклад, для числа 76.34862 буде зберігатися мантиса 7634862 в об'єкті класу Biglnteger, і порядок 5 як ціле число типу int. Таким чином, мантиса може містити будь-яку кількість цифр, а порядок обмежений значенням константи integer.MAX_VALUE. Результат операції над об'єктами класу BigDecimal округляється по одному з восьми правил, обумовлених наступними статичними цілими константами:
– ROUND_CEILING – округлення убік більшого цілого;
– ROUND_DOWN – округлення до нуля, до меншого по модулю цілого значенню;
– ROUND_FLOOR – округлення до меншого цілого;
– ROUND_HALF_DOWN – округлення до найближчого цілого, середнє значення округляється до меншого цілого;
– ROUND_HALF_EVEN – округлення до найближчого цілого, середнє значення округляється до парного числа;
– ROOND_HALF_UP – округлення до найближчого цілого, середнє значення округляється до більшого цілого;
– ROUND_UNNECESSARY – припускається, що результат буде цілим, і округлення не знадобиться;
– ROUND_UP – округлення від нуля, до більшого по модулю цілого значенню.
У класі BigDecimal чотири конструктори:
– BigDecimal(Biglnteger bi) – об'єкт буде зберігати велике ціле bi, порядок дорівнює нулю;
– BigDecimal(Biglnteger mantissa, int scale) – задається мантиса mantissa і ненегативний порядок scale об'єкта; якщо порядок scale негативний, виникає виняткова ситуація;
– BigDecimal(double d) – об'єкт буде містити речовинне число подвоєної точності d; якщо значення d нескінченно або Na, те виникає виняткова ситуація;
– BigDecimal(String val) – число задається рядком символів val, де повинен бути запис числа за правилами мови Java.
При використанні третього з перерахованих конструкторів виникає неприємна особливість, відзначена в документації. Оскільки речовинне число при перетворенні у двійкову форму представляється, як правило, нескінченним двійковим дробом, то при створенні об'єкта, наприклад, BigDecimal(0.1), мантиса, що зберігається в об'єкті, виявиться дуже великою. Вона показана на рис. 4.5. Але при створенні такого ж об'єкта четвертим конструктором, BigDecimal("0.1"), мантиса буде дорівнює просто 1.
У Класі перевизначені методи doubleValue(), floatValue(), intValue(), longValue().
Більшість методів цього класу моделюють операції з дійсними числами. Вони повертають об'єкт класу BigDecimal. Тут буква х позначає об'єкт класу BigDecimal, буква n - ціле значення типу int, буква r – спосіб округлення, одну з восьми перерахованих вище констант:
– abs() – абсолютне значення об'єкта this ;
– add(x) – операція this + х ;
– divide(х, r) – операція this / х з округленням за способом r ;
– divide(х, n, r) – операція this / х зі зміною порядку й округленням за способом r ;
– mах(х) – найбільше з this і х ;
– min(x) – найменше з this і х ;
– movePointLeft(n) – зсув вліво на n розрядів;
– movePointRight(n) – зсув вправо на n розрядів;
– multiply(х) – операція this * х ;
– negate() – повертає об'єкт зі зворотним знаком;
– scale() – повертає порядок чисел;
– setscale(n) – встановлює новий порядок n ;
– setscale(n, r) – встановлює новий порядок n і округляє число при необхідності за способом r ;
– signum() – знак числа, що зберігається в об'єкті;
– subtract(х) – операція this - х ;
– toBiginteger() – округлення числа, що зберігається в об'єкті;
unScaledValue() – повертає мантису числа.
Програма 5.3 показує приклади використання цих методів, а рис. 5.4 – вивід результатів.
Рисунок 5.4 – Методи класу BigDecimal у програмі BigDecimalTest
Програма 5.3. Методи класу BigDecimal У програмі BigDecimalTest
import java.math.*;
class BigDecimalTest{
public static void main,( String [] args) {
BigDecimal x = new BigDecimal("-12345.67890123456789");
BigDecimal y = new BigDecimal("345.7896e-4");
BigDecimal z = new BigDecimal(new Biglnteger("123456789"),8);
System.out.println("|x| = " + x.abs());
System.out.println("x + y = " + x.add(y));
System.out.println("x / y = " + x.divide(y, BigDecimal.ROUND__DOWN));
System.out.println("х/у = " +
x.divide(y, 6, BigDecimal.ROUND_HALF_EVEN));
System.out.println("max(x, y) = " + x.max(y));
System.out.println("min(x, y) = " + x.min(y));
System.out.println("x « 3 = " * x.movePointLeft(3));
System.out.println("x » 3 = " + x.mpvePQintRight(3));
System.out.println("x * y = " + x.multiply(y));
System.out.println("-x = " + x.negate());
System.out.println("scale of x = " + x.scale());
System.out.println("increase scale of x to 20 = " + x.setScale(20));
System.out.println("decrease scale of x to 10 = " +
x.setScale(10, BigDecimal.ROUND_HALF__UP)) ;
System.out.println("sign(x) = " + x.signum());
System.out.println("x - y = " + x.subtract(y)};
System.out.println("round x = " + x.toBiglnteger());
System.out.println("mantissa of x = " + x.unscaledValue());
System.out.println("mantissa of 0.1 =\n= " +
new BigDecimal(0.1).unscaledValue()); } }