Ce face BigInteger.add
a.add(b) și a.multiply(b) returnează un BigInteger nou cu rezultatul exact, oricât de mare. subtract scade, iar divide face împărțirea întreagă (ca / la int: partea fracționară se pierde).
Pentru a aduna într-o buclă păstrezi rezultatul: suma = suma.add(x). Un exemplu clasic este factorialul, care crește foarte repede: 25! are 26 de cifre.
Parametri
| Parametru | Descriere |
|---|---|
alt |
Al doilea număr. |
Ce returnează
Un BigInteger nou.
Exemple
Exemplul 1: Factorialul lui 30
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger f = BigInteger.ONE;
for (int i = 2; i <= 30; i++) {
f = f.multiply(BigInteger.valueOf(i));
}
System.out.println("30! = " + f);
System.out.println("Cifre: " + f.toString().length());
}
}
Rezultat
30! = 265252859812191058636308480000000
Cifre: 33
Exemplul 2: Fibonacci: al 100-lea termen
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger a = BigInteger.ZERO;
BigInteger b = BigInteger.ONE;
for (int i = 0; i < 100; i++) {
BigInteger urm = a.add(b);
a = b;
b = urm;
}
System.out.println("F(100) = " + a);
}
}
Rezultat
F(100) = 354224848179261915075
Exemplul 3: Scădere și împărțire întreagă
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger populatieLume = new BigInteger("8100000000");
BigInteger populatieRomania = new BigInteger("19000000");
System.out.println("Diferența: " + populatieLume.subtract(populatieRomania));
System.out.println("De câte ori mai mult: " + populatieLume.divide(populatieRomania));
}
}
Rezultat
Diferența: 8081000000
De câte ori mai mult: 426
Greșeli frecvente
- Apelezi
f.multiply(x);fără atribuire.frămâne neschimbat; scrief = f.multiply(x);. - Te aștepți ca
dividesă dea zecimale. Este împărțire întreagă; pentru zecimale foloseșteBigDecimal.
Comenzi înrudite
BigInteger: Întreg fără limită de mărime (cât îl lasă memoria); BigInteger.valueOf(n) îl creează dintr-un long.BigInteger.pow: pow ridică la putere (2^100 exact); mod dă restul împărțirii, mereu pozitiv; modPow calculează rapid (a^b) mod m.BigDecimal.add: Adunare, scădere și înmulțire exactă între BigDecimal; fiecare returnează un număr nou.