Tronquer le double en Java
-
Utilisez
DecimalFormat
pour tronquer le double en Java -
Utilisez
BigDecimal
pour tronquer le double en Java - Utiliser la bibliothèque commune Apache pour tronquer la décimale en Java
-
Utilisez
java.lang.Math
pour tronquer Decimal en Java
Dans cet article, nous verrons comment tronquer ou arrondir un nombre à n décimales en Java. Java fournit deux types primitifs pour stocker les valeurs décimales qui sont doubles et flottantes. Il est recommandé d’utiliser la classe BigDecimal
pour des valeurs précises ou des arrondis.
Utilisez DecimalFormat
pour tronquer le double en Java
DecimalFormat
est une sous-classe de NumberFormat
qui peut formater des nombres décimaux en utilisant le modèle de formatage fourni. Ici, dans le code ci-dessous, nous avons créé un objet de DecimalFormat
en passant un modèle de mise en forme approprié. Nous pouvons appeler la méthode format()
sur l’objet decimatFormat
et passer notre double variable d
comme paramètre.
La méthode format()
renvoie une chaîne tronquée, comme indiqué dans la sortie.
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);
}
}
Production:
Formatted double d = 9.457
Utilisez BigDecimal
pour tronquer le double en Java
En Java, les BigDecimal
sont des nombres décimaux signés immuables et de précision arbitraire. Il permet de contrôler l’échelle et la précision. Nous créons un objet BigDecimal
en passant le double converti sous forme de chaîne, évitant ainsi les problèmes de représentation des valeurs approximatives.
On appelle ensuite la méthode setScale(int newScale, RoundingMode roundingMode)
sur cet objet BigDecimal
bd
, qui prend deux arguments: l’échelle de BigDecimal à renvoyer et l’autre est le mode d’arrondi à appliquer. Le mode RoundingMode.FLOOR
arrondit vers l’infini négatif.
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);
}
}
Production:
BigDecimal rounded off : 9.45
Utiliser la bibliothèque commune Apache pour tronquer la décimale en Java
Nous pouvons réaliser la même chose avec cette bibliothèque dont la dépendance maven est donnée ci-dessous.
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.5</version>
</dependency>
Nous pouvons utiliser la méthode Precision.round()
de cette bibliothèque pour formater le décimal. Cette méthode prend deux arguments, l’un étant la variable décimale à mettre en forme et l’échelle. Nous avons besoin de 4 chiffres après la virgule décimale; c’est donc l’échelle dont nous avons besoin. La sortie montre que les chiffres décimaux sont tronqués.
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);
}
}
Production:
Precision rounded off : 9.4569
Utilisez java.lang.Math
pour tronquer Decimal en Java
C’est une autre façon d’arrondir les nombres décimaux en Java. La méthode Math.pow()
contrôle le nombre n
de décimales en multipliant et en divisant par 10n. Nous créons une double variable scale
en utilisant cette méthode qui prend deux arguments, base 10 et puissance 3.
Math.round()
en Java permet d’arrondir un nombre à son entier le plus proche. Cela se fait en ajoutant 1/2 au nombre, en parlant du plancher du résultat et en convertissant le résultat en un type de données entier. Cette méthode n’est pas recommandée car elle tronque parfois la valeur de manière incorrecte.
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);
}
}
Production:
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