La classe Java Big­De­ci­mal consente di rap­pre­sen­ta­re con pre­ci­sio­ne numeri complessi in virgola mobile. Dopo essere stata creata, può essere uti­liz­za­ta con vari metodi. Dato che la sintassi è strut­tu­ra­ta sempre in modo simile, la classe Big­De­ci­mal può essere uti­liz­za­ta fa­cil­men­te anche da chi è agli inizi.

Cos’è Big­De­ci­mal in Java?

Big­De­ci­mal è una classe di Java che consente di vi­sua­liz­za­re ed elaborare con estrema pre­ci­sio­ne numeri complessi in virgola mobile, teo­ri­ca­men­te di qualsiasi di­men­sio­ne. Grazie ai vari metodi pre­sen­ta­ti in questo articolo, puoi servirti di questa classe per eseguire con la massima pre­ci­sio­ne ope­ra­zio­ni di ar­ro­ton­da­men­to, arit­me­ti­ca, con­ver­sio­ne di formato, hashing e confronti so­fi­sti­ca­ti.

La classe Big­De­ci­mal è co­sti­tui­ta da una scala di interi a 32 bit e da un valore intero non scalato con pre­ci­sio­ne ar­bi­tra­ria. Per “scala” in questo caso si intende il numero di cifre dopo la virgola decimale, a patto che questo sia maggiore o uguale a zero. Tuttavia, se il valore è inferiore a zero, viene mol­ti­pli­ca­to per “10^(-scala)”. La di­men­sio­ne massima possibile della classe è limitata solo dalla memoria del computer. Questa però è una con­si­de­ra­zio­ne pret­ta­men­te teorica, poiché è im­pro­ba­bi­le che un programma crei un numero in grado di eccedere la memoria di­spo­ni­bi­le. La classe Big­De­ci­mal di Java è destinata esclu­si­va­men­te ai numeri in virgola mobile. I numeri interi vengono elaborati con la classe Bi­gIn­te­ger.

Web Hosting
Miglior Hosting per il tuo sito web o negozio
  • Di­spo­ni­bi­li­tà garantita al 99,99%
  • Dominio, SSL ed e-mail inclusi
  • As­si­sten­za 24/7 in lingua italiana

A cosa serve questa classe?

A causa del suo elevato livello di dettaglio, per molte ap­pli­ca­zio­ni la classe Big­De­ci­mal non è ne­ces­sa­ria, ma ci sono si­tua­zio­ni e campi di ap­pli­ca­zio­ne in cui si rivela in­di­spen­sa­bi­le. Un esempio sono i calcoli in cui anche la più piccola cifra decimale può fare la dif­fe­ren­za, come le tran­sa­zio­ni nel settore dell’e-commerce. La classe Big­De­ci­mal viene uti­liz­za­ta anche per ef­fet­tua­re analisi statiche di pre­ci­sio­ne, ad esempio nei programmi che si occupano del controllo e della na­vi­ga­zio­ne di aerei o razzi oppure nel settore medico. Sono svariati i campi in cui questa pre­ci­sio­ne di calcolo risulta preziosa al fine di as­si­cu­ra­re la massima ac­cu­ra­tez­za possibile.

Come si crea un oggetto?

Per uti­liz­za­re Big­De­ci­mal in Java, occorre in­nan­zi­tut­to importare la classe nel programma Java. Una volta fatto ciò, è possibile di­chia­ra­re un oggetto di questa classe, quindi creare il valore de­si­de­ra­to come argomento e passarlo al co­strut­to­re Java ap­pro­pria­to. Dopo aver com­ple­ta­to questo processo, potrai uti­liz­za­re la classe Big­De­ci­mal creata in Java. A questo scopo, all’interno della classe sono di­spo­ni­bi­li diversi metodi, il cui utilizzo sarà il­lu­stra­to in modo più det­ta­glia­to nei prossimi paragrafi. Per prima cosa, è ne­ces­sa­rio importare la classe e di­chia­ra­re due oggetti di esempio:

/ / Il tuo programma Java per la classe BigDecimal
import java.math.BigDecimal;
public class BigDecimalEsempio
{
	public static void main(String[] args)
	{
		/ / Crea due nuovi BigDecimal
		BigDecimal EsempioUno =
			new BigDecimal ("1275936001.744297361");
		BigDecimal EsempioDue =
			new BigDecimal ("4746691047.132719503");
	}
}
java

Ora puoi uti­liz­za­re questi oggetti con i metodi ap­pro­pria­ti alla classe.

Esempi di Big­De­ci­mal in Java

Una volta creati gli oggetti, puoi uti­liz­zar­li per eseguire ope­ra­zio­ni ser­ven­do­ti di diversi metodi. Uti­liz­ze­re­mo alcuni semplici esempi per mostrarti il pro­ce­di­men­to e quali risultati è possibile ottenere. L’output viene avviato tramite il comando Java System.out.println().

Ag­giun­ge­re due Big­De­ci­mal

È possibile sommare due Big­De­ci­mal in Java con il metodo add(). Per farlo, occorre me­mo­riz­za­re i due valori di cui si desidera calcolare la somma. Nel nostro esempio, il valore “Esem­pioU­no” deve essere sommato al valore “Esem­pio­Due”. Il risultato è il seguente:

EsempioUno =
EsempioUno.add(EsempioDue);
System.out.println ("Il risultato che si desidera ottenere dopo l’aggiunta è " + EsempioUno);
java

Sottrarre i valori

Per sottrarre due valori tra loro, puoi uti­liz­za­re il metodo subtract(). Nell’esempio seguente, sot­tra­ia­mo “Esem­pio­Due” da “Esem­pioU­no”. Il codice si presenta quindi così:

EsempioUno =
EsempioUno.subtract(EsempioDue);
System.out.println ("Il risultato ottenuto dopo la sottrazione è: " + EsempioUno);
java

Mol­ti­pli­ca­re i valori

Il metodo uti­liz­za­to per mol­ti­pli­ca­re due Big­De­ci­mal in Java funziona in modo molto simile ai due pre­ce­den­te­men­te il­lu­stra­ti. Si chiama multiply() e utilizza l’oggetto “mol­ti­pli­ca­to­re” come argomento. Per mol­ti­pli­ca­re “Esem­pio­Due” per “Esem­pioU­no”, il codice da uti­liz­za­re è il seguente:

EsempioUno =
EsempioUno.multiply(EsempioDue);
System.out.println ("Il risultato ottenuto dopo la moltiplicazione è: " + EsempioUno);
java

Dividere i valori

Per dividere due Big­De­ci­mals in Java, si può ricorrere al metodo divide(). Anche questo metodo segue la sintassi consueta e si presenta in questo modo:

EsempioUno =
EsempioUno.divide(EsempioDue);
System.out.println ("Il risultato ottenuto dopo la divisione è: " + EsempioUno);
java

Questo metodo funziona però solo se il risultato è un numero esatto o un numero intero. In caso contrario, viene vi­sua­liz­za­to il seguente messaggio di errore: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.. Si tratta di un errore di ese­cu­zio­ne. Per evitarlo, esistono diverse opzioni di ar­ro­ton­da­men­to per il metodo divide(), che possono essere trasmesse tramite java.math.Roun­ding­Mo­de. Puoi scegliere tra le seguenti costanti:

Costante Funzione
CEILING Arrotonda verso l’infinito positivo.
DOWN Arrotonda verso lo 0.
FLOOR Arrotonda verso l’infinito negativo.
HALF_DOWN Arrotonda verso il numero più vicino e il numero opposto allo 0, se equi­di­stan­ti.
HALF_EVEN Arrotonda verso il numero più vicino e il numero pari più vicino, se equi­di­stan­ti.
HALF_UP Arrotonda verso il numero più vicino e verso lo 0, se equi­di­stan­ti.
UN­NE­CES­SA­RY Ignora gli ar­ro­ton­da­men­ti ed esegue solo ope­ra­zio­ni esatte. Questa costante può essere uti­liz­za­ta solo quando la divisione è esatta.
UP Arrotonda lontano dallo 0.

Una pa­no­ra­mi­ca dei metodi più im­por­tan­ti

Ora che hai imparato come usare la classe Big­De­ci­mal in Java e come uti­liz­za­re i metodi adatti a questo scopo, ti pre­sen­tia­mo una pa­no­ra­mi­ca di alcuni dei metodi più im­por­tan­ti.

Metodo Funzione
abs() Re­sti­tui­sce Big­De­ci­mal con il valore assoluto di Big­De­ci­mal
add() Re­sti­tui­sce Big­De­ci­mal il cui valore è composto da (this + Addend).
divide() Re­sti­tui­sce Big­De­ci­mal il cui valore è composto da (this / Divisor).
max(Big­De­ci­mal val) Re­sti­tui­sce il massimo di Big­De­ci­mal.
min(Big­De­ci­mal val) Re­sti­tui­sce il minimo di Big­De­ci­mal.
mo­ve­Poin­tLeft(int n) Re­sti­tui­sce Big­De­ci­mal in cui il punto decimale è stato spostato a sinistra del valore “n”.
mo­ve­Poin­tRight(int n) Re­sti­tui­sce Big­De­ci­mal in cui il punto decimale è stato spostato a destra del valore “n”.
multiply(Big­De­ci­mal mul­ti­pli­cand, Ma­th­Con­text mc) Re­sti­tui­sce Big­De­ci­mal in cui il punto decimale è stato spostato a destra del valore “n”.
Consiglio

Nella nostra Digital Guide trovi molte altre in­for­ma­zio­ni sui linguaggi di pro­gram­ma­zio­ne più popolari, incluso Java. Ad esempio, puoi ap­pro­fon­di­re le tue co­no­scen­ze sugli operatori Java, scoprire tutto quello che c’è da sapere sulle dif­fe­ren­ze tra Java e Ja­va­Script oppure tra Java e Python.

Vai al menu prin­ci­pa­le