MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Numere mari: BigInteger și BigDecimal

Tipurile de date numerice primitive încorporate nu sunt întotdeauna potrivite pentru anumite programe. De exemplu, este necesar să stocăm și să utilizăm în program numere foarte mari, care depășesc valorile maxime admise pentru tipurile long și double.

În acest caz, pentru a lucra cu date numerice, putem folosi două tipuri suplimentare din pachetul java.math - BigInteger (pentru date întregi) și BigDecimal (pentru numere în virgulă mobilă).

Metodele principale ale clasei BigInteger:

  • BigInteger add(BigInteger other): returnează suma a două numere
  • BigInteger subtract(BigInteger other): returnează diferența a două numere
  • BigInteger multiply(BigInteger other): returnează produsul a două numere
  • BigInteger divide(BigInteger other): returnează câtul a două numere
  • BigInteger mod(BigInteger other): returnează restul împărțirii întregi a douănumere
  • BigInteger sqrt(): returnează rădăcina pătrată a numărului
  • int compareTo(BigInteger other): compară două numere. Returnează -1 dacă obiectul curent este mai mic decât other, 1 dacă este mai mare și 0 dacă numerele sunt egale
  • static BigInteger valueOf(long x): returnează un obiect BigInteger, a cărui valoare este egală cu numărul primit ca parametru
  • int intValue(): convertește obiectul BigInteger într-un obiect de tip int
  • byte byteValue(): convertește obiectul BigInteger în byte
  • short shortValue(): convertește obiectul BigInteger în short
  • long longValue(): convertește obiectul BigInteger în long

Metodele principale ale clasei BigDecimal:

  • BigDecimal add(BigDecimal other): returnează suma a două numere
  • BigDecimal subtract(BigDecimal other): returnează diferența a două numere
  • BigDecimal multiply(BigDecimal other): returnează produsul a două numere
  • BigDecimal divide(BigDecimal other): returnează câtul a două numere
  • BigDecimal divide(BigDecimal other, RoundingMode mode): returnează rezultatul împărțirii a două numere, rotunjit conform modului mode
  • int compareTo(BigDecimal other): compară două numere. Returnează -1 dacă obiectul curent este mai mic decât other, 1 dacă este mai mare și 0 dacă numerele sunt egale
  • static BigDecimal valueOf(double x): returnează un obiect BigDecimal, a cărui valoare este egală cu numărul primit ca parametru
  • double doubleValue(): convertește obiectul BigDecimal în double
  • float floatValue(): convertește obiectul BigDecimal în float

Exemplu de utilizare a claselor BigInteger și BigDecimal:

import java.math.*;

public class Program {
 
   public static void main(String[] args) {
         
       BigInteger a = BigInteger.valueOf(2147483647);
       BigInteger b = BigInteger.valueOf(2147483641);
       //a = a * b;  // așa nu se poate
       a = a.multiply(b);
       System.out.println(a);  // 4611686001247518727
       long x = a.longValue();
       System.out.println(x);  // 4611686001247518727
       
       BigDecimal c = BigDecimal.valueOf(2325.06);
       BigDecimal d = BigDecimal.valueOf(215.06);
       c = c.subtract(d.multiply(BigDecimal.valueOf(2.1)));
       System.out.println(c);      // 1873.434
       double y = c.doubleValue();
       System.out.println(y);      // 1873.434
   }
}

Este important de menționat că, deși obiectele BigInteger și BigDecimal reprezintă numere, nu putem aplica asupra lor operațiunile aritmetice standard. Toate operațiunile matematice cu aceste obiecte se efectuează prin metodele lor.

← Lecția anterioară Lecția următoare →