🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Esercizi su BigInteger e BigDecimal in Java

Codegrind Team•Jul 12 2024

Ecco degli esercizi con soluzione per praticare l’uso delle classi BigInteger e BigDecimal in Java.

Esercizio 1: Creazione di BigInteger

Creare un oggetto `BigInteger` e stamparne il valore.
import java.math.BigInteger;

public class EsempioBigInteger {
    public static void main(String[] args) {
        BigInteger bigInt = new BigInteger("123456789012345678901234567890");
        System.out.println("BigInteger: " + bigInt);
    }
}

Esercizio 2: Operazioni Aritmetiche con BigInteger

Eseguire addizione, sottrazione, moltiplicazione e divisione con `BigInteger`.
import java.math.BigInteger;

public class OperazioniBigInteger {
    public static void main(String[] args) {
        BigInteger a = new BigInteger("12345678901234567890");
        BigInteger b = new BigInteger("98765432109876543210");

        BigInteger somma = a.add(b);
        BigInteger differenza = a.subtract(b);
        BigInteger prodotto = a.multiply(b);
        BigInteger quoziente = a.divide(b);

        System.out.println("Somma: " + somma);
        System.out.println("Differenza: " + differenza);
        System.out.println("Prodotto: " + prodotto);
        System.out.println("Quoziente: " + quoziente);
    }
}

Esercizio 3: Creazione di BigDecimal

Creare un oggetto `BigDecimal` e stamparne il valore.
import java.math.BigDecimal;

public class EsempioBigDecimal {
    public static void main(String[] args) {
        BigDecimal bigDec = new BigDecimal("12345.6789012345678901234567890");
        System.out.println("BigDecimal: " + bigDec);
    }
}

Esercizio 4: Operazioni Aritmetiche con BigDecimal

Eseguire addizione, sottrazione, moltiplicazione e divisione con `BigDecimal`.
import java.math.BigDecimal;

public class OperazioniBigDecimal {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("12345.6789");
        BigDecimal b = new BigDecimal("98765.4321");

        BigDecimal somma = a.add(b);
        BigDecimal differenza = a.subtract(b);
        BigDecimal prodotto = a.multiply(b);
        BigDecimal quoziente = a.divide(b, BigDecimal.ROUND_HALF_UP);

        System.out.println("Somma: " + somma);
        System.out.println("Differenza: " + differenza);
        System.out.println("Prodotto: " + prodotto);
        System.out.println("Quoziente: " + quoziente);
    }
}

Esercizio 5: Confronto tra BigInteger

Confrontare due oggetti `BigInteger` utilizzando i metodi `compareTo` e `equals`.
import java.math.BigInteger;

public class ConfrontoBigInteger {
    public static void main(String[] args) {
        BigInteger a = new BigInteger("12345678901234567890");
        BigInteger b = new BigInteger("12345678901234567890");
        BigInteger c = new BigInteger("98765432109876543210");

        System.out.println("a equals b: " + a.equals(b));
        System.out.println("a compareTo b: " + a.compareTo(b));
        System.out.println("a compareTo c: " + a.compareTo(c));
    }
}

Esercizio 6: Confronto tra BigDecimal

Confrontare due oggetti `BigDecimal` utilizzando i metodi `compareTo` e `equals`.
import java.math.BigDecimal;

public class ConfrontoBigDecimal {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("12345.6789");
        BigDecimal b = new BigDecimal("12345.6789");
        BigDecimal c = new BigDecimal("98765.4321");

        System.out.println("a equals b: " + a.equals(b));
        System.out.println("a compareTo b: " + a.compareTo(b));
        System.out.println("a compareTo c: " + a.compareTo(c));
    }
}

Esercizio 7: Calcolo del Fattoriale con BigInteger

Calcolare il fattoriale di un numero grande utilizzando `BigInteger`.
import java.math.BigInteger;

public class FattorialeBigInteger {
    public static void main(String[] args) {
        int n = 50; // Numero di cui calcolare il fattoriale
        BigInteger fattoriale = BigInteger.ONE;

        for (int i = 2; i <= n; i++) {
            fattoriale = fattoriale.multiply(BigInteger.valueOf(i));
        }

        System.out.println("Fattoriale di " + n + " è: " + fattoriale);
    }
}

Esercizio 8: Calcolo di Potenze con BigDecimal

Calcolare la potenza di un numero utilizzando `BigDecimal`.
import java.math.BigDecimal;
import java.math.MathContext;

public class PotenzaBigDecimal {
    public static void main(String[] args) {
        BigDecimal base = new BigDecimal("2.5");
        int esponente = 3;
        BigDecimal potenza = base.pow(esponente, MathContext.DECIMAL64);

        System.out.println(base + " elevato alla potenza di " + esponente + " è: " + potenza);
    }
}

Esercizio 9: Calcolo di Radici con BigDecimal

Calcolare la radice quadrata di un numero utilizzando `BigDecimal`.
import java.math.BigDecimal;
import java.math.MathContext;

public class RadiceBigDecimal {
    public static void main(String[] args) {
        BigDecimal numero = new BigDecimal("25.0");
        BigDecimal radice = sqrt(numero, MathContext.DECIMAL64);

        System.out.println("Radice quadrata di " + numero + " è: " + radice);
    }

    public static BigDecimal sqrt(BigDecimal value, MathContext mc) {
        BigDecimal x0 = new BigDecimal(0);
        BigDecimal x1 = new BigDecimal(Math.sqrt(value.doubleValue()));
        while (!x0.equals(x1)) {
            x0 = x1;
            x1 = value.divide(x0, mc).add(x0).divide(BigDecimal.valueOf(2), mc);
        }
        return x1;
    }
}

Esercizio 10: Conversione tra BigInteger e BigDecimal

Convertire un oggetto `BigInteger` in `BigDecimal` e viceversa.
import java.math.BigInteger;
import java.math.BigDecimal;

public class ConversioneBigIntegerBigDecimal {
    public static void main(String[] args) {
        BigInteger bigInt = new BigInteger("12345678901234567890");
        BigDecimal bigDec = new BigDecimal(bigInt);
        System.out.println("BigDecimal da BigInteger: " + bigDec);

        BigDecimal bigDec2 = new BigDecimal("12345.6789");
        BigInteger bigInt2 = bigDec2.toBigInteger();
        System.out.println("BigInteger da BigDecimal: " + bigInt2);
    }
}