Questo articolo è stato co-redatto da Nicole Levine, MFA. Nicole Levine è una Scrittrice ed Editor Specializzata in Tecnologia che collabora con wikiHow. Ha più di 20 anni di esperienza nella creazione di documentazione tecnica e nella guida di team di supporto presso le principali società di web hosting e software. Nicole ha anche una Laurea Magistrale in Scrittura Creativa conseguita presso la Portland State University e insegna composizione, scrittura narrativa e creazione di zine presso varie istituzioni.
Questo articolo spiega tre metodi diversi per eseguire una divisione fra numeri decimali in Java. Se si ha la necessità di dividere due numeri interi (privi di decimali) e ottenere un risultato decimale senza arrotondamento, basta eseguire il "cast" di uno degli operandi a "double". Per eseguire la divisione di due numeri decimali (oppure di un intero per un decimale o viceversa) basta semplicemente eseguire la divisione fra tipi di dati "double" per essere sicuri di ottenere un risultato decimale. Quando si lavora con numeri molto grandi o con un tasso di precisione molto elevato la soluzione consiste nell'utilizzare la classe di Java BigDecimal invece di usare un numero in virgola mobile.
Passaggi
Metodo 1
Metodo 1 di 3:Ottenere un numero decimale partendo da due interi
-
1Java, esattamente come altri linguaggi di programmazione, per impostazione predefinita utilizza i numeri interi per eseguire le divisioni aritmetiche. Se la divisione dei due interi genera un resto, quest'ultimo verrà scartato e verrà presa in considerazione solo la parte intera della divisione. Se dividendo due interi hai la necessità di ottenere un risultato decimale, quindi più preciso, puoi eseguire il "cast" di uno dei due operandi della divisione con il tipo di dati
double
prima di eseguire l'operazione.[1] Nel seguente esempio viene mostrato come eseguire il "cast" della variabile a adouble
in modo da ottenere come quoziente della divisione un numero decimale:int a = 55; int b = 25; double r = (double) a / b //Il risultato della divisione sarà 2,2.
Pubblicità
Metodo 2
Metodo 2 di 3:Dividere due numeri decimali (di tipo double)
-
1Quando si divide un numero decimale per un altro numero decimale occorre usare delle variabili di tipo "double".[2] Anche se uno dei due operandi è un intero (cioè un numero privo di parte decimale) il risultato sarà comunque un numero decimale, se l'altro operatore è di tipo "double". Di seguito trovi un esempio di codice che calcola la divisione fra due numeri decimali:
double x = 10.5; double y = 2.5; x / y //Il risultato della divisione è 4,2.
Metodo 3
Metodo 3 di 3:Ottenere un risultato più preciso usando la classe BigDecimal
-
1Se lavori nel campo della finanza o se stai eseguendo calcoli matematici che necessitano di un livello di precisione molto elevato per la parte decimale, puoi usare la classe di Java BigDecimal. I numeri in virgola mobile (rappresentati con il tipo di dati
double
) hanno una precisione inferiore, dato che le variabili di tipodouble
memorizzano i valori al loro interno sotto forma di numeri frazionari binari con esponente, invece di usare la rappresentazione esatta (cioè un numero dove si usa un numero di byte predefinito per memorizzare la parte decimale, i cosiddetti "numeri a virgola fissa").[3] Per essere sicuro di lavorare con numeri a virgola fissa, usa la classeBigDecimal
. Nell'esempio seguente viene usata la classe BigDecimal per calcolare il quoziente fra due numeri e ottenere un risultato estremamente preciso:BigDecimal bdec = new BigDecimal("706"); BigDecimal bdecRes = bdec.divide(new BigDecimal("20")); System.out.println("Risultato della divisione: " + bdecRes); //La divisione viene eseguita tramite la classe MathContext MathContext mc = new MathContext(2, RoundingMode.FLOOR); BigDecimal bdecMath = bdec.divide(new BigDecimal("20"), mc); System.out.println("Divide with MathContext: " + bdecMath); //Il primo risultato della divisione sarà 45,25 mentre il secondo 45.
- Quando si usa la classe BigDecimal occorre specificare il parametro
RoundingMode
, cioè il tipo di arrotondamento da usare per produrre il risultato del calcolo, che può essereUP
(arrotonda allontanandosi dallo zero, considerando il valore assoluto del numero),DOWN
(arrotonda avvicinandosi allo zero, considerando il valore assoluto del numero),CEILING
(arrotondamento verso l'alto),FLOOR
(arrotonda verso il basso),HALF_UP
(è il metodo di arrotondamento classico, se la cifra troncata è >= 5 si arrotonda verso l'alto),HALF_DOWN
(è il metodo di arrotondamento classico, se la cifra troncata è < 5 si arrotonda verso il basso),HALF_EVEN
(è una modalità di arrotondamento mista, verso l'alto e verso il basso, con lo scopo di contenere l'errore quando si eseguono operazioni di arrotondamento in sequenza) oUNNECESSARY
(il risultato dovrebbe essere quello esatto, in caso contrario verrà sollevata un'eccezione di tipo "ArithmeticException").[4]
Pubblicità - Quando si usa la classe BigDecimal occorre specificare il parametro