У цій статті ми проведемо короткий огляд класу Math Java. Поговоримо про методи даного класу та про те, як їх використовувати. Клас Math розташовується в пакеті java.lang та надає набір статичних методів для здійснення низки різних математичних обчислень. Нижче наведено приклади обчислень, для яких клас Math може бути корисним:
- Обчислення абсолютних значень (значень за модулем)
- Обчислення значень тригонометричних функцій (синусів, косінусів тощо)
- Зведення в різні ступені
- Вилучення коренів різних ступенів
- Генерація випадкових чисел
- Округлення
- та ін.
- static double abs(double a)
- static float abs(float a)
- static int abs(int a)
- static long abs (long a)
public static void main(String[] args) {
System.out.println(Math.abs(-1)); // 1
System.out.println(Math.abs(-21.8d)); // 21.8
System.out.println(Math.abs(4532L)); // 4532
System.out.println(Math.abs(5.341f)); // 5.341
}
Обчислення значень тригонометричних функцій
Клас Math дозволяє обчислювати різні тригонометричні функції – синуси, косинуси, тангенси та ін. З повним переліком методів можна познайомитися на сайті офіційної документації . Нижче наведено деякий перелік даних методів:- static double sin(double a)
- static double cos(double a)
- static double tan(double a)
- static double asin(double a)
- static double acos(double a)
- static double atan(double a)
- static double toDegrees(double angrad)
- static double toRadians(double angdeg)
public static void main(String[] args) {
System.out.println(Math.sin(Math.toRadians(0)));
System.out.println(Math.sin(Math.toRadians(30)));
System.out.println(Math.sin(Math.toRadians(90)));
System.out.println(Math.cos(Math.toRadians(0)));
System.out.println(Math.cos(Math.toRadians(30)));
System.out.println(Math.cos(Math.toRadians(90)));
}
Програма виведе:
0.0
0.49999999999999994
1.0
1.0
0.8660254037844387
6.123233995736766E-17
Що не зовсім відповідає таблицям синусів і косінусів, частково завдяки похибкам при переведенні з градусів у радіани.
Зведення в ступінь
Для зведення числа в ступінь клас Math надає метод pow, який має таку сигнатуру:static double pow(double a, double b)
Даний метод зводить параметр `a` у ступінь `b`. Приклади:
public static void main(String[] args) {
System.out.println(Math.pow(1,2)); // 1.0
System.out.println(Math.pow(2,2)); // 4.0
System.out.println(Math.pow(3,2)); // 9.0
System.out.println(Math.pow(4,2)); // 16.0
System.out.println(Math.pow(5,2)); // 25.0
System.out.println(Math.pow(1,3)); // 1.0
System.out.println(Math.pow(2,3)); // 8.0
System.out.println(Math.pow(3,3)); // 27.0
System.out.println(Math.pow(4,3)); // 64.0
System.out.println(Math.pow(5,3)); // 125.0
}
Вилучення коренів
Клас Math надає методи для вилучення коренів: квадратного та кубічного. За цю процедуру відповідають такі методи:- static double sqrt(double a)
- static double cbrt(double a)
public static void main(String[] args) {
System.out.println(Math.sqrt(4)); // 2.0
System.out.println(Math.sqrt(9)); // 3.0
System.out.println(Math.sqrt(16)); // 4.0
System.out.println(Math.cbrt(8)); // 2.0
System.out.println(Math.cbrt(27)); // 3.0
System.out.println(Math.cbrt(125)); // 5.0
}
Генерація випадкових чисел
Для генерації випадкових чисел клас Math надає метод random. Даний метод генерує випадкове позитивне речове (double) число у проміжку від 0.0 до 1.0. Сигнатура методу має такий вигляд:public static double random()
Погляньмо на приклади:
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println(Math.random());
}
}
Після виконання методу мейн на консоль вивелося:
0.37057465028778513
0.2516253742011597
0.9315649439611121
0.6346725713527239
0.7442959932755443
За допомогою невеликих маніпуляцій, можна використовувати метод random класу Math для отримання цілих випадкових чисел лежачих у певному діапазоні. Наведемо приклад функції, яка приймає два аргументи min і max і повертає випадкове ціле число, яке лежить у проміжку від min (включно) до max (включно):
static int randomInARange(int min, int max) {
return (int) (Math.random() * ((max - min) + 1)) + min;
}
Напишемо метод Main, в якому протестуємо метод randomInARange:
public class MathExample {
public static void main(String[] args) {
// Карта, в которой мы будем хранить количество выпадений якого-то числа
Map<Integer, Integer> map = new TreeMap<>();
// За 10000 операций
for (int i = 0; i < 10000; i++) {
// Сгенерируем рандомное число от -10 включительно до 10 включительно
final Integer randomNumber = randomInARange(-10, 10);
if (!map.containsKey(randomNumber)) {
// Если карта еще не содержит "выпавшего случайного числа"
// Положим его в карту с кол-вом выпадений = 1
map.put(randomNumber, 1);
} else {
// Иначе, увеличим количество выпадений данного числа на 1
map.put(randomNumber, map.get(randomNumber) + 1);
}
}
// Выведем на экран содержимое карты в формате ключ=[значення]
for (Map.Entry<Integer, Integer> entry : map.entrySet()){
System.out.println(String.format("%d=[%d]", entry.getKey(), entry.getValue()));
}
}
static int randomInARange(int min, int max) {
return (int) (Math.random() * ((max - min) + 1)) + min;
}
}
Після запуску методу main висновок може бути таким:
-10=[482]
-9=[495]
-8=[472]
-7=[514]
-6=[457]
-5=[465]
-4=[486]
-3=[500]
-2=[490]
-1=[466]
0=[458]
1=[488]
2=[461]
3=[470]
4=[464]
5=[463]
6=[484]
7=[479]
8=[459]
9=[503]
10=[444]
Process finished with exit code 0
Округлення
Для округлення чисел Java одним із інструментів є методи класу Math. А точніше методи round, ceil та floor:- static long round(double a)
- static int round(float a)
- static double floor(double a)
- static double ceil(double a)
public static void main(String[] args) {
System.out.println(Math.round(1.3)); // 1
System.out.println(Math.round(1.4)); // 1
System.out.println(Math.round(1.5)); // 2
System.out.println(Math.round(1.6)); // 2
System.out.println(Math.floor(1.3)); // 1.0
System.out.println(Math.floor(1.4)); // 1.0
System.out.println(Math.floor(1.5)); // 1.0
System.out.println(Math.floor(1.6)); // 1.0
System.out.println(Math.ceil(1.3)); // 2.0
System.out.println(Math.ceil(1.4)); // 2.0
System.out.println(Math.ceil(1.5)); // 2.0
System.out.println(Math.ceil(1.6)); // 2.0
}
Висновок
У статті ми поверхово познайомабося з класом Math. Розглянули, як за допомогою цього класу можна:- Обчислювати значення за модулем;
- обчислювати значення тригонометричних функцій;
- Зводити числа до ступеня;
- Видобувати квадратне та кубічне коріння;
- генерувати випадкові числа;
- Округлювати числа.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ