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,subtractemultiply dividerichiede una scala e unRoundingModeper risultati non terminanti- Confronti con
compareTo, non conequals
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
- Perché non utilizzare double per il denaro
- Utilizzare BigDecimal
- Arrotondamento e scala
- BigInteger per numeri enormi