User Artem Divertitto
Artem Divertitto
Senior Android Developer w United Tech

Używanie metody Math.Pow w Java

Opublikowano w grupie Poland
Język Java jest wyposażony w obszerną bibliotekę funkcji i operacji matematycznych. Nazywa się ją klasą Math i znajduje się ona w pakiecie java.lang. Biblioteka Math zawiera metody podstawowych operacji numerycznych, trygonometrii, znajdowania najmniejszych/największych wartości, generowania liczb losowych oraz operacji logarytmicznych. W dzisiejszym samouczku skupimy się na metodzie Math.pow() w Javie, która służy do obliczania potęg liczb za pomocą podstawy i wykładnika. Okej, zaczynajmy. Wyrażenie „n-ta potęga a” można zapisać matematycznie jako an. Możemy zdefiniować terminy w wyrażeniach w następujący sposób: a - podstawa n - wykładnik. Rozważmy wykładnik. Można go określić jako liczbę powtórzeń operacji mnożenia. Podstawą jest liczba, która jest mnożona przez siebie.Używanie metody Math.Pow w Java - 1Utwórzmy teraz prostą metodę, aby obliczyć potęgę w Javie. Proszę zauważyć, że w poniższym przykładzie przekazujemy dwa argumenty do metody powerFunction(), które są odpowiednio podstawą i wykładnikiem.

public class Main {
 
   public static void main(String[] args) {
       int result = powerFunction(2, 5);
       System.out.println("2 podniesione do potęgi 5 = " + result);
   }
 
   static int powerFunction(int base, int exponent) {
       int result = 1;
       for (int i = 0; i < exponent; i++) {
           result = base * result;
       }
       return result;
   }
}
Gdybyśmy uruchomili powyższy przykładowy kod, zwróciłby on 32. Być może zastanawiasz się, dlaczego nie możemy po prostu napisać base^exponent. Nie możemy tego zrobić, ponieważ Java nie posiada operatora potęgowania, którego moglibyśmy użyć w pojedynczej linii kodu. Biorąc pod uwagę powyższy kod, oczywiste jest, że musieliśmy poświęcić sporo czasu na napisanie tej metody. Co więcej, jeśli mamy zamiar obliczać duże potęgi, wykonanie tej metody zajmie dużo czasu, ponieważ używamy pętli for. Dodatkowo, pętle uniemożliwią nam wykonywanie obliczeń potęgowych z wykładnikami ułamkowymi. Ta metoda nie ma dobrej złożoności obliczeniowej i można ją lepiej zoptymalizować. Biorąc pod uwagę, jak często programiści używają potęgowania i innych operacji matematycznych, twórcy Javy stworzyli kiedyś bibliotekę o nazwie Math, która ma na celu ułatwienie wykonywania obliczeń matematycznych. Dlatego zamiast pisać funkcję potęgową od podstaw, możemy skorzystać z tej biblioteki, która znajduje się w pakiecie Java Lang.

Co to jest metoda Math.pow w Java i jak z niej korzystać?

Math.pow można znaleźć w pakiecie java.lang jako metodę biblioteki Math. Służy do obliczania potęgi liczb zarówno całkowitych jak i podwójnych. Zastanówmy się nad jej składnią.

public static double pow(double base, double exponent)
Jak widać w składni, metoda java.lang.Math.pow() przyjmuje dwa argumenty. Pierwsza to podstawa, a druga to wykładnik. Zwróci to baseexponent jako dane wyjściowe. Zobaczmy, jak możemy to wywołać.

Podnoszenie liczby do potęgi w Javie przy użyciu należącej do klasy Math metody pow w Javie

Znajdźmy wartość 54 używając Math.pow.

import java.lang.Math;
public class MyClass{
    public static void main(String []args){
       double answer = Math.pow(5, 4);
// metoda java.lang.Math.pow()
 
       System.out.println("5 podniesione do potęgi 4 = " + answer);
    }    
}
Wynik to 625,0. Jak widać, jest to wartość typu double. Jeśli przeszkadza ci przecinek dziesiętny, możemy łatwo się go pozbyć, zamieniając liczbę na liczbę całkowitą w następujący sposób. Zauważ, że zmieniamy pierwszą linię wewnątrz metody main.

 int answer = (int) Math.pow(5, 4);
Teraz wynik wynosi 625. Użyjmy liczb ułamkowych zarówno dla podstawy jak i wykładnika oraz spróbujmy uzyskać odpowiedź. Zobaczmy, jaka jest wartość 1,254,5.

import java.lang.Math;
 
public class MyClass {
 
   public static void main(String[] args) {
       double answer = Math.pow(1.25, 4.5);
// metoda java.lang.Math.pow()
 
       System.out.println("1,25 podniesione do potęgi 4,5 = " + answer);
   }
}
To dałoby wynik 2,729575167846423. Jeśli użyjesz kalkulatora, zobaczysz, że pokazuje tę samą odpowiedź. Zanim przejdziemy do następnej sekcji, prześledźmy jeszcze jeden przykład. Podniesiemy liczbę do potęgi ujemnej i porównamy wyniki. W tym przykładzie wybierzemy 4 jako podstawę i -2 jako wykładnik.

import java.lang.Math;
 
public class MyClass{
 
     public static void main(String []args){
        double answer = Math.pow(4, -2);
// metoda java.lang.Math.pow()
 
        System.out.println(answer);
     }    
}
Otrzymujemy wynik 0,0625. Używanie metody Math.Pow w Java - 2

Szybki przykład: Jak zaokrąglić wynik

Powiedzmy, że musimy znaleźć wartość 1,254,5. Wynik to 2,729575167846423. Dość często konieczne jest jego zaokrąglenie. Spróbujmy go uzyskać z dokładnością do czwartego miejsca po przecinku. Jak to zrobić? Co jeśli wymagamy tylko pierwszych 4 miejsc po przecinku? W tym celu możemy użyć metody java.lang.Math.round. Ponieważ jednak Math.round zaokrągla wartość do najbliższej liczby całkowitej, będziemy musieli pomnożyć ją przez liczbę miejsc po przecinku, a następnie ponownie zaokrąglić i podzielić.

import java.lang.Math;
 
public class MyClass{
 
     public static void main(String []args){
        double answer = Math.pow(1.25, 4.5);
        answer = Math.round(answer*100.0)/100.0;
        
        System.out.println(answer);
     }
     
}
Wynik to 2,73.

Jak prawidłowo używać Math.pow

Kiedy używamy metody java.lang.Math.pow, należy pamiętać o kilku kwestiach.
  1. Jeśli parametr wykładnika wynosi zero, wynik będzie równy 1,0. Dzieje się tak, ponieważ potęga zera dla dowolnej liczby jest definiowana jako jeden.
  2. Jeśli parametr wykładnika wynosi jeden, wynikiem będzie parametr podstawy. Dzieje się tak, ponieważ jeśli podniesiesz dowolną liczbę do potęgi 1, wynik będzie taki sam, jak podstawa.
  3. Jeśli podstawą jest zero ujemne/dodatnie, a parametr wykładnika jest liczbą ujemną, to wynikiem będzie nieskończoność. (Ujemne zera mogą występować z powodu zaokrąglania liczb od zera do najmniejszej możliwej do przedstawienia ujemnej liczby niezerowej).
  4. Jeśli parametr wykładnika ma wartość NaN, danymi wyjściowymi również będzie NaN.
Rozważmy jeden przypadek, w którym może dojść do tej trzeciej sytuacji.

import java.lang.Math;
 
public class MyClass{
 
     public static void main(String []args){         
        double base = 5;
        double exponent = Double.NaN;
 
        double answer = Math.pow(base, exponent);
 
        System.out.println(answer);
     }     
}
Spowoduje to wyświetlenie NaN w konsoli. Tak więc, jeśli wynikiem twojego kodu jest NaN, rozsądnie byłoby sprawdzić, czy argument wykładnika też jest NaN. Jeśli zastanawiasz się, co to jest NaN, oznacza to, że „nie jest to liczba” (ang. Not A Number) i wskazuje, że wartość nie została zdefiniowana. Wierzymy, że jesteś teraz gotowy, aby przejść dalej i korzystać z lang.Math.pow() w swoich aplikacjach.

Wniosek

Metoda java.lang.Math.pow() to świetny sposób na łatwe znalezienie potęgi różnych liczb, zarówno całkowitych jak i ułamkowych. W przeciwieństwie do metody, którą możesz napisać samodzielnie, jest wysoce zoptymalizowana i dobrze nadaje się do szeregu zastosowań, w których czas ma znaczenie krytyczne. Chociaż wszystkie wyniki są wyświetlane jako typy double, zawsze możemy zamienić wartość na liczbę całkowitą, tak jak zrobiliśmy to w powyższym przykładzie. Ponadto, dla naszej wygody biblioteka java.lang.Math zapewnia metody zaokrąglania wyniku do preferowanej liczby miejsc dziesiętnych.
Ten artykuł przeczytasz także po angielsku.
This article is also available in English to help you master Java’s Math.pow() method.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION