Kurs Java Podstawy - rozszerzony

Klasa Math

Klasa Math służy w Javie do wykonywania zarówno podstawowych jak i nieco bardziej skomplikowanych operacji matematycznych. Znajdziemy w niej metodę do potęgowania i pierwiastkowania liczb, obliczania funkcji trygonometrycznych, a także stałe PI oraz E.

 

Stałe

W klasie Math znajdziemy dwie stałe typu double:

  • Math.PI (3.141592653589793)
  • Math.E (2.718281828459045)

które odpowiadają liczbie pi oraz e często wykorzystywanych we wzorach matematycznych. Warto ich używać, zamiast ręcznego definiowania np. wartości 3.14.

Metody

Wszystkie metody w ramach tej klasy są statyczne więc nie musimy tworzyć obiektu klasy Math, aby korzystać z metod w niej zdefiniowanych. Klasa znajduje się w pakiecie java.lang więc nie musimy jej importować, aby z niej skorzystać.

Wartość bezwzględna

Do obliczenia wartości bezwzględnej służy metoda abs(), która występuje w przeciążonych wersjach dla typów int, float, double i long.

Funkcje trygonometryczne

Możliwość obliczenia funkcji trygonometrycznych dają nam metody:

  • double sin(double a)
  • double cos(double a)
  • double tan(double a)

Jako argument należy przekazać stopnie z radianach. W celu zamiany stopni na radiany możemy skorzystać z metody Math.toRadians(double a).

Min / Max

Metody Min/Max dają możliwość wybrania większej z liczb, co jest przydatne jeśli chcemy uniknąć powtarzalnego zapisywania warunków if lub wyrażeń trójargumentowych.

  • double min(double a, double b)
  • double max(double a, double b)

Metody występują także w przeciążonych wersjach dla innych typów danych (int, long, float).

Potęgowanie

W celu podniesienia liczby do potęgi warto skorzystać z metody pow (skrót od angielskiego power). Przyjmuje ona dwa argumenty - podstawę (liczbę, którą chcemy podnieść do potęgi) i wykładnik potęgi (do której potęgi chcemy podnieść).

  • double pow(double a, double b)

Pierwiastkowanie

Klasa Math udostępnia metodę sqrt, która oblicza pierwiastek kwadratowy podanej liczby. Nie istnieje gotowa metoda, która pozwalałaby obliczyć pierwiastki wyższych rzędów.

  • double sqrt(double a)

Zaokrąglanie

Niektórzy do zaokrąglenia liczb wykorzystują konwersję zawężającą liczb, np.:

double a = 5.6;
int b = (int)a;

Problem polega na tym, że konwersja taka nie powoduje zaokrąglenia, ale zamiast tego ucięcie części dziesiętnej. W powyższym przykładzie liczba b przyjmie wartość 5, a nie 6.

Do zaokrąglenia powinniśmy wykorzystywać metodę Math.round, która przyjmuje liczby typu float lub double.

  • double round(double a)

Przykład

public class MathExample {
	public static void main(String[] args) {
		System.out.println(Math.PI);
		// 3.141592653589793
		System.out.println(Math.E);
		// 2.718281828459045
		double sin = Math.sin(Math.PI/2);
		System.out.println(sin);
		// 1.0

		double a = 5.6;
		int b = (int) a;
		long round = Math.round(a);
		System.out.println(b);
		// 5
		System.out.println(round);
		// 6
		
		double minus = -10;
		double abs = Math.abs(minus);
		System.out.println(abs);
		// 10.0
		
		double power = Math.pow(2, 4);
		System.out.println(power);
		// 16.0 (2^4)
		System.out.println(Math.sqrt(power));
		// 4.0 (pierwiastek kwadratowy z 16)
	}
}

Kod na Github.com

math

Komentarze