W tym artykule dokonamy krótkiego przeglądu klasy Math w Javie. Porozmawiajmy o metodach tej klasy i o tym, jak z nich korzystać. Klasa Math znajduje się w pakiecie java.lang i udostępnia zestaw metod statycznych do wykonywania szeregu różnych obliczeń matematycznych. Poniżej znajdują się przykłady obliczeń, do których przydatna może być klasa Math:
- Obliczanie wartości bezwzględnych (wartości modulo)
- Obliczanie wartości funkcji trygonometrycznych (sinusów, cosinusów itp.)
- Elewacja w różnym stopniu
- Wyrywanie korzeni różnego stopnia
- Generowanie liczb losowych
- Zaokrąglanie
- Itp.
- statyczny podwójny abs (podwójny a)
- statyczny pływak abs (pływak a)
- statyczny int abs(int a)
- statyczny długi brzuch (długi 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
}
Obliczanie funkcji trygonometrycznych
Klasa Math umożliwia obliczanie różnych funkcji trygonometrycznych - sinusów, cosinusów, tangensów itp. Pełną listę metod można znaleźć na oficjalnej stronie dokumentacji . Poniżej znajduje się lista tych metod:- statyczny podwójny grzech (podwójne a)
- statyczny podwójny cos(podwójny a)
- statyczna podwójna opalenizna (podwójne a)
- statyczny podwójny asin(podwójny a)
- statyczne podwójne acos (podwójne a)
- statyczny podwójny atan(podwójne a)
- statyczny podwójny do stopni (podwójny angrad)
- statyczny podwójny toRadians (podwójny 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)));
}
Program wyświetli:
0.0
0.49999999999999994
1.0
1.0
0.8660254037844387
6.123233995736766E-17
Co nie do końca odpowiada tablicom sinusów i cosinusów, częściowo z powodu błędów w konwersji stopni na radiany.
Potęgowanie
Aby podnieść liczbę do potęgi, klasa Math udostępnia metodę pow, która ma następującą sygnaturę:static double pow(double a, double b)
Ta metoda podnosi parametr „a” do potęgi „b”. Przykłady:
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
}
Ekstrakcja korzeni
Klasa Math udostępnia metody obliczania pierwiastków kwadratowych i sześciennych. Za tę procedurę odpowiedzialne są następujące metody:- statyczny podwójny sqrt(podwójne a)
- statyczny podwójny cbrt(podwójny 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
}
Generowanie liczb losowych
Aby wygenerować liczby losowe, klasa Math udostępnia metodę losową. Metoda ta generuje losową dodatnią liczbę rzeczywistą (podwójną) z zakresu od 0,0 do 1,0. Sygnatura metody wygląda następująco:public static double random()
Spójrzmy na przykłady:
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println(Math.random());
}
}
Po wykonaniu metody main na konsoli wyświetliło się:
0.37057465028778513
0.2516253742011597
0.9315649439611121
0.6346725713527239
0.7442959932755443
Przy odrobinie manipulacji można użyć metody losowej klasy Math do uzyskania liczb losowych w postaci liczb całkowitych mieszczących się w określonym zakresie. Oto przykład funkcji, która przyjmuje dwa argumenty min i max i zwraca losową liczbę całkowitą z zakresu od min (włącznie) do max (włącznie):
static int randomInARange(int min, int max) {
return (int) (Math.random() * ((max - min) + 1)) + min;
}
Napiszmy metodę Main, w której przetestujemy metodę randomInARange:
public class MathExample {
public static void main(String[] args) {
// Карта, в которой мы будем хранить количество выпадений Jakого-то числа
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);
}
}
// Выведем на экран содержимое карты в формате ключ=[oznaczający]
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;
}
}
Po uruchomieniu metody main wynik może wyglądać następująco:
-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
Zaokrąglanie
Do zaokrąglania liczb w Javie jednym z narzędzi są metody klasy Math. Dokładniej, metody okrągłe, sufitowe i podłogowe:- statyczna długa runda (podwójna a)
- statyczny int okrągły (float a)
- statyczne podwójne piętro (podwójne a)
- statyczny podwójny sufit (podwójny 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
}
Wniosek
W tym artykule przyjrzeliśmy się powierzchownie lekcjom matematycznym. Przyjrzeliśmy się, jak za pomocą tej klasy możesz:- Oblicz wartości modulo;
- Oblicz wartości funkcji trygonometrycznych;
- Podnieś liczby do potęg;
- Wyodrębnij pierwiastki kwadratowe i sześcienne;
- Generuj liczby losowe;
- Okrągłe liczby.
GO TO FULL VERSION