Wielkie liczby - BigInteger, BigDecimal
Jeśli typ double nie wystarczy do wykonania obliczeń, ponieważ wymagana będzie wyjątkowa precyzja lub będziesz używać wielkich wartości liczbowych - np. w bankowości, skorzystasz chętnie ze specjalnych klas zapewniających możliwość operowania na praktycznie nieograniczonych wartościach. W klasach tych dostępne są dodatkowe, specjalne funkcje matematyczne.
- BigInteger - klasa dla wielkich liczb całkowitych
- BigDecimal - klasa dla wielkich liczb zmiennoprzecinkowych
Najbardziej powszechną metodą tworzenia wartości typu/klasy BigInteger i BigDecimal jest użycie wartości liczbowych zapisanych w formie łańcucha znaków.
BigInteger wielkaLiczba = new BigInteger("1231231231231231231234212345566778908364");
Na wartościach typu/klasy BigInteger i BigDecimal nie możemy operować przy użyciu zwykłych operatorów. Wszystkie operacje matematyczne musimy wykonywać przy użycu specjalnych metod. Wynik wyświetlamy, przekształcając wartość typu BigInteger lub BigDecimal na łańcuch znaków.
BigInteger a = new BigInteger("123123123123123123123123123123");
BigInteger b = new BigInteger("987654321987654321987654321987");
BigInteger suma = a.add(b);
System.out.println( "Suma: " + suma.toString() );
Przykład - mnożenie dwóch liczb zmiennoprzecinkowych o wielkiej liczbie cyfr:
Aby możliwe było użycie klas BigInteger oraz/lub BigDecimal, konieczne jest zaimportowanie tych klas z biblioteki java.math.
import java.math.*;
class BigDecimalProgram {
public static void main( String... args ) {
BigDecimal a = new BigDecimal("12345678901234567890.12345678901234567890");
BigDecimal b = new BigDecimal("22345678901234567890.22345678901234567890");
BigDecimal wynik = a.multiply( b );
System.out.println( "Wynik: " + wynik );
}
}
Informacje o przydatnych metodach klasy BigInteger oraz BigDecimal znajdziesz w dokumentacji firmy Oracle. Np. wpisz w Google następujące zapytanie: "biginteger java 8".