Tronquer le double en Java

Rupam Yadav 12 octobre 2023
  1. Utilisez DecimalFormat pour tronquer le double en Java
  2. Utilisez BigDecimal pour tronquer le double en Java
  3. Utiliser la bibliothèque commune Apache pour tronquer la décimale en Java
  4. Utilisez java.lang.Math pour tronquer Decimal en Java
Tronquer le double 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
Auteur: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

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

Article connexe - Java Double