Arrondi des nombres à virgule flottante en Java

JavaJavaBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Arrondir un nombre signifie obtenir une valeur approchée de celui-ci. En Java, il existe plusieurs façons d'arrondir un nombre à virgule flottante. Dans ce lab (atelier) LabEx, nous allons apprendre à arrondir des nombres en utilisant différentes méthodes en Java.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java/BasicSyntaxGroup -.-> java/output("Output") java/BasicSyntaxGroup -.-> java/math("Math") java/ProgrammingTechniquesGroup -.-> java/method_overloading("Method Overloading") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/format("Format") java/SystemandDataProcessingGroup -.-> java/math_methods("Math Methods") java/SystemandDataProcessingGroup -.-> java/system_methods("System Methods") subgraph Lab Skills java/output -.-> lab-117452{{"Arrondi des nombres à virgule flottante en Java"}} java/math -.-> lab-117452{{"Arrondi des nombres à virgule flottante en Java"}} java/method_overloading -.-> lab-117452{{"Arrondi des nombres à virgule flottante en Java"}} java/format -.-> lab-117452{{"Arrondi des nombres à virgule flottante en Java"}} java/math_methods -.-> lab-117452{{"Arrondi des nombres à virgule flottante en Java"}} java/system_methods -.-> lab-117452{{"Arrondi des nombres à virgule flottante en Java"}} end

Arrondi en utilisant la méthode printf()

Nous pouvons utiliser la méthode System.out.printf() pour afficher le nombre arrondi dans la console. Nous pouvons spécifier le nombre de décimales que nous souhaitons conserver en utilisant des modificateurs de précision.

public static void main(String args[]) {
  double pi = 3.14159265359;
  double oneThird = 1.0/3.0;
  float g = 9.807f;

  System.out.printf("Pi: %.2f %n", pi); // affiche Pi: 3.14
  System.out.printf("One Third: %.3f %n", oneThird); // affiche One Third: 0.333
  System.out.printf("Gravitation Acceleration(g): %.0f", g); // affiche Gravitation Acceleration(g): 10
}

Pour exécuter le code, ouvrez le terminal et accédez au répertoire où se trouve le fichier de code. Ensuite, compilez le code en utilisant javac filename.java. Après cela, exécutez-le en utilisant java filename.

Arrondi en utilisant la méthode DecimalFormat()

Nous pouvons utiliser la classe DecimalFormat pour spécifier un modèle selon lequel nous souhaitons formater le nombre. Nous pouvons utiliser des dièses (#) pour spécifier le nombre de décimales, puis utiliser la méthode format() pour arrondir les chiffres.

public static void main(String args[]) {
  double pi = 3.14159265359;
  double oneThird = 1.0/3.0;
  float g = 9.807f;

  DecimalFormat d1 = new DecimalFormat("#.##");
  DecimalFormat d2 = new DecimalFormat("#.###");
  DecimalFormat d3 = new DecimalFormat("#");

  System.out.println("Pi: " + d1.format(pi)); // affiche Pi: 3.14
  System.out.println("One Third: " + d2.format(oneThird)); // affiche One Third: 0.333
  System.out.println("Gravitation Acceleration(g):" + d3.format(g)); // affiche Gravitation Acceleration(g): 10
}

Pour exécuter le code, ouvrez le terminal et accédez au répertoire où se trouve le fichier de code. Ensuite, compilez le code en utilisant javac filename.java. Après cela, exécutez-le en utilisant java filename.

Arrondi en utilisant la méthode Math.round()

Nous pouvons utiliser Math.round() pour arrondir des nombres décimaux. Cette méthode peut être utilisée lorsque nous souhaitons arrondir un nombre à zéro décimales.

public static void main(String args[]) {
  double pi = 3.14159265359;
  double oneThird = 1.0/3.0;
  float g = 9.807f;

  System.out.println("Pi: " + Math.round(pi)); // affiche Pi: 3
  System.out.println("One Third: " + Math.round(oneThird)); // affiche One Third: 0
  System.out.println("Gravitation Acceleration(g):" + Math.round(g)); // affiche Gravitation Acceleration(g): 10
}

Pour exécuter le code, ouvrez le terminal et accédez au répertoire où se trouve le fichier de code. Ensuite, compilez le code en utilisant javac filename.java. Après cela, exécutez-le en utilisant java filename.

Créer une méthode d'arrondi personnalisée

Nous pouvons créer notre propre méthode pour arrondir un nombre décimal si nous souhaitons arrondir à plus de zéro décimales. La méthode suivante prend une valeur décimale et le nombre de décimales à conserver en tant que paramètres et renvoie le nombre arrondi.

public static double round(double num, int places) {
  double scale = Math.pow(10, places);
  double roundedNum = Math.round(num * scale) / scale;
  return roundedNum;
}

public static void main(String args[]) {
  double pi = 3.14159265359;
  double oneThird = 1.0/3.0;
  float g = 9.807f;

  System.out.println("Pi: " + round(pi, 2)); // affiche Pi: 3.14
  System.out.println("One Third: " + round(oneThird, 3)); // affiche One Third: 0.333
  System.out.println("Gravitation Acceleration(g):" + round(g, 0)); // affiche Gravitation Acceleration(g): 10.0
}

Pour exécuter le code, ouvrez le terminal et accédez au répertoire où se trouve le fichier de code. Ensuite, compilez le code en utilisant javac filename.java. Après cela, exécutez-le en utilisant java filename.

Arrondi en utilisant BigDecimal

Nous pouvons utiliser la méthode round() de la classe BigDecimal pour arrondir un nombre. Le code suivant montre comment arrondir un nombre décimal en utilisant la méthode round() de la classe BigDecimal.

public static void main(String args[]) {
  BigDecimal pi = new BigDecimal("3.14159265359");
  pi = pi.setScale(4, RoundingMode.HALF_UP); // Arrondi à 4 décimales

  System.out.println("Pi: " + pi); // affiche Pi: 3.1416
}

Pour exécuter le code, ouvrez le terminal et accédez au répertoire où se trouve le fichier de code. Ensuite, compilez le code en utilisant javac filename.java. Après cela, exécutez-le en utilisant java filename.

Arrondir n'importe quel nombre non BigDecimal en utilisant BigDecimal

Si le nombre n'est pas de type BigDecimal, nous pouvons d'abord le convertir puis l'arrondir en utilisant la classe BigDecimal. La méthode suivante peut être utilisée pour arrondir des nombres de type double.

public static double round(double num, int places) {
  BigDecimal b = new BigDecimal(Double.toString(num));
  b = b.setScale(places, RoundingMode.HALF_UP);
  return b.doubleValue();
}

public static void main(String args[]) {
  double pi = 3.14159265359;
  double oneThird = 1.0/3.0;
  double g = 9.807f;

  pi = round(pi, 4);
  oneThird = round(oneThird, 3);
  g = round(g, 0);

  System.out.println("Pi: " +pi); // affiche Pi: 3.1416
  System.out.println("One Third: " + oneThird); // affiche One Third: 0.333
  System.out.println("Gravitation Acceleration(g):" + g); // affiche Gravitation Acceleration(g): 10.0
}

Pour exécuter le code, ouvrez le terminal et accédez au répertoire où se trouve le fichier de code. Ensuite, compilez le code en utilisant javac filename.java. Après cela, exécutez-le en utilisant java filename.

Résumé

Dans ce laboratoire, nous avons appris différentes méthodes pour arrondir des nombres décimaux en Java. Nous avons utilisé printf() et DecimalFormat() pour des arrondis plus simples, Math.round() pour arrondir à zéro décimales, BigDecimal pour des arrondis précis et DoubleRounder pour arrondir en utilisant la bibliothèque decimal4j. Nous avons également créé une méthode personnalisée pour arrondir n'importe quel nombre décimal à n'importe quel nombre de décimales.