Troncare il doppio in Java
-
Usa
DecimalFormat
per troncare il doppio in Java -
Usa
BigDecimal
per troncare il doppio in Java - Usa la libreria comune di Apache per troncare i decimali in Java
-
Usa
java.lang.Math
per troncare i decimali in Java
In questo articolo, vedremo come troncare o arrotondare un numero a n punti decimali in Java. Java fornisce due tipi primitivi per memorizzare valori decimali che sono double e float. Si consiglia di utilizzare la classe BigDecimal
per valori precisi o arrotondamenti.
Usa DecimalFormat
per troncare il doppio in Java
DecimalFormat
è una sottoclasse di NumberFormat
che può formattare i numeri decimali utilizzando il modello di formattazione fornito. Qui nel codice seguente, abbiamo creato un oggetto di DecimalFormat
che passa un modello di formattazione adatto. Possiamo chiamare il metodo format()
sull’oggetto decimatFormat
e passare la nostra doppia variabile d
come parametro.
Il metodo format()
restituisce una stringa che viene troncata, come mostrato nell’output.
import java.text.DecimalFormat;
public class DecimalFormatting {
public static void main(String args[]) {
double d = 9.4568982982989;
String pattern = "#.###";
DecimalFormat decimalFormat = new DecimalFormat(pattern);
String formattedDouble = decimalFormat.format(d);
System.out.println("Formatted double d = " + formattedDouble);
}
}
Produzione:
Formatted double d = 9.457
Usa BigDecimal
per troncare il doppio in Java
In Java, i BigDecimal
sono numeri decimali con segno e precisione arbitraria immutabili. Fornisce controllo su scala e precisione. Creiamo un oggetto BigDecimal
passando il doppio convertito come stringa, evitando problemi con la rappresentazione di valori approssimativi.
Chiamiamo quindi il metodo setScale(int newScale, RoundingMode roundingMode)
su questo oggetto BigDecimal
bd
, che accetta due argomenti: la scala di BigDecimal da restituire e l’altra è la modalità di arrotondamento da applicare. La modalità RoundingMode.FLOOR
arrotonda verso l’infinito negativo.
public class DecimalFormatting {
public static void main(String args[]) {
double d = 9.4568982982989;
BigDecimal bd = new BigDecimal(String.valueOf(d));
BigDecimal rounded = bd.setScale(2, RoundingMode.FLOOR);
System.out.println("BigDecimal rounded off : " + rounded);
}
}
Produzione:
BigDecimal rounded off : 9.45
Usa la libreria comune di Apache per troncare i decimali in Java
Possiamo ottenere lo stesso da questa libreria la cui dipendenza Maven è indicata di seguito.
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.5</version>
</dependency>
Possiamo usare il metodo Precision.round()
da questa libreria per formattare i decimali. Questo metodo accetta due argomenti, uno la variabile decimale da formattare e scalare. Abbiamo bisogno di 4 cifre dopo il punto decimale; quindi questa è la scala di cui abbiamo bisogno. L’output mostra che le cifre nel decimale sono troncate.
import org.apache.commons.math3.util.Precision;
public class DecimalFormatting {
public static void main(String args[]) {
double d = 9.4568982982989;
double doubleP = Precision.round(d, 4);
System.out.println("Precision rounded off : " + doubleP);
}
}
Produzione:
Precision rounded off : 9.4569
Usa java.lang.Math
per troncare i decimali in Java
Questo è un altro modo per arrotondare i numeri decimali in Java. Il metodo Math.pow()
controlla n
il numero di cifre decimali moltiplicando e dividendo per 10n. Creiamo una doppia variabile scala
usando questo metodo che prende due argomenti, base 10 e potenza 3.
Math.round()
in Java viene utilizzato per arrotondare un numero all’intero più vicino. Questo viene fatto aggiungendo 1/2 al numero, parlando della base del risultato e convertendo il risultato in un tipo di dati intero. Questo metodo non è consigliato poiché a volte tronca il valore in modo errato.
public class DecimalFormatting {
public static void main(String args[]) {
double d = 9.4568982982989;
double scale = Math.pow(10, 3);
double doubleM1 = Math.round(d * scale) / scale;
System.out.println("Math1 Rounded off: " + doubleM1);
}
}
Produzione:
Math Rounded off: 9.45
Math1 Rounded off: 9.457
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn