0Pricing
Java Academy · Lezione

Utilizzare BigDecimal

Aritmetica decimale esatta

Utilizzare BigDecimal è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Java Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Java Academy include 4 lezioni in totale.

Aritmetica decimale esatta

BigDecimal, del package java.math, rappresenta i numeri decimali con precisione arbitraria e senza errori di arrotondamento nascosti. È lo strumento standard per i calcoli finanziari.

Creare un BigDecimal

Il modo più sicuro per creare un BigDecimal è partire da una stringa. In questo modo vengono preservate esattamente le cifre immesse.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal amount = new BigDecimal("42.50");
        System.out.println(amount);
    }
}

Immutabilità

BigDecimal è immutabile. Operazioni come add non modificano l'oggetto originale, ma restituiscono un nuovo BigDecimal. Deve memorizzare il valore restituito.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("10");
        a.add(new BigDecimal("5"));
        System.out.println(a);
    }
}

Addizione e sottrazione

Utilizzi add e subtract, ricordando di memorizzare il risultato. Ogni chiamata restituisce un nuovo valore.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal price = new BigDecimal("19.99");
        BigDecimal tax = new BigDecimal("1.60");
        BigDecimal total = price.add(tax);
        System.out.println(total);
    }
}

Moltiplicazione

multiply funziona come previsto. Tenga presente che la scala del risultato è la somma delle scale degli operandi.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal unit = new BigDecimal("2.50");
        BigDecimal qty = new BigDecimal("3");
        System.out.println(unit.multiply(qty));
    }
}

La divisione richiede attenzione

Dividere valori che non si dividono esattamente, come 1 per 3, produce un decimale infinito. In questo caso divide senza parametri aggiuntivi genera una ArithmeticException.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal one = new BigDecimal("1");
        BigDecimal three = new BigDecimal("3");
        try {
            System.out.println(one.divide(three));
        } catch (ArithmeticException e) {
            System.out.println("Need to specify rounding!");
        }
    }
}

Divisione con arrotondamento

Fornisca una scala e un RoundingMode per dividere in sicurezza. In questo caso vengono mantenute due cifre decimali con arrotondamento per eccesso a partire da 5.

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        BigDecimal one = new BigDecimal("1");
        BigDecimal three = new BigDecimal("3");
        System.out.println(one.divide(three, 2, RoundingMode.HALF_UP));
    }
}

Confrontare i valori

Utilizzi compareTo per confrontare il valore numerico. Non utilizzi equals, perché equals considera la scala: 2.0 e 2.00 non sono uguali secondo equals, ma lo sono secondo compareTo.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("2.0");
        BigDecimal b = new BigDecimal("2.00");
        System.out.println(a.equals(b));
        System.out.println(a.compareTo(b) == 0);
    }
}

Costanti utili

BigDecimal offre costanti già pronte: BigDecimal.ZERO, BigDecimal.ONE e BigDecimal.TEN. Le utilizzi invece di crearne di proprie.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal sum = BigDecimal.ZERO;
        sum = sum.add(BigDecimal.TEN);
        System.out.println(sum);
    }
}

Sommare una lista

Un modello comune consiste nel partire da BigDecimal.ZERO e aggiungere ogni valore in un ciclo, memorizzando ogni volta il risultato.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal[] prices = {
            new BigDecimal("1.10"),
            new BigDecimal("2.20"),
            new BigDecimal("3.30")
        };
        BigDecimal total = BigDecimal.ZERO;
        for (BigDecimal p : prices) {
            total = total.add(p);
        }
        System.out.println(total);
    }
}

Buone pratiche

Ricordi gli aspetti essenziali: crei i valori a partire da stringhe, li tratti come immutabili, specifichi sempre l'arrotondamento per la divisione e utilizzi compareTo per i confronti.

Verifica rapida

Verifichi la sua conoscenza di BigDecimal.

Riepilogo

Ha imparato a lavorare con BigDecimal:

  • Lo crei a partire da una stringa per preservare le cifre esatte
  • È immutabile, quindi memorizzi il risultato di ogni operazione
  • Utilizzi direttamente add, subtract e multiply
  • divide richiede una scala e un RoundingMode per risultati non terminanti
  • Confronti con compareTo, non con equals

Domande Frequenti

La lezione «Utilizzare BigDecimal» è gratuita?

Sì — il testo completo di «Utilizzare BigDecimal» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Java Academy, passa a CoddyKit PRO. Il corso Java Academy include 4 lezioni in totale.

Cosa imparerò in «Utilizzare BigDecimal»?

Aritmetica decimale esatta Eserciti Java Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Java Academy?

Non è richiesta alcuna esperienza precedente. Java Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Utilizzare BigDecimal»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Java Academy?

Sì. Ogni lezione Java Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Perché non utilizzare double per il denaro
  2. Utilizzare BigDecimal
  3. Arrotondamento e scala
  4. BigInteger per numeri enormi
← Torna a Java Academy