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.

  Kurs Java

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

              Dyskusja i komentarze

              Masz pytania do tego wpisu? Może chcesz się podzieliś spostrzeżeniami? Zapraszamy dyskusji na naszej grupe na Facebooku.