0Pricing
Java Academy · Leçon

Travailler avec BigDecimal

Arithmétique décimale exacte

Travailler avec BigDecimal est une leçon Java Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Java Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Java Academy comprend 4 leçons au total.

Calcul décimal exact

BigDecimal, issu du paquet java.math, représente les nombres décimaux avec une précision arbitraire et sans erreurs d’arrondi cachées. C’est l’outil standard pour les calculs financiers.

Créer un BigDecimal

La manière la plus sûre de créer un BigDecimal consiste à partir d’une chaîne de caractères. Cela préserve exactement les chiffres que vous avez saisis.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal amount = new BigDecimal("42.50");
        System.out.println(amount);
    }
}

Immutabilité

BigDecimal est immuable. Les opérations comme add ne modifient pas la valeur d’origine ; elles renvoient un nouveau BigDecimal. Vous devez récupérer la valeur renvoyée.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("10");
        a.add(new BigDecimal("5"));
        System.out.println(a);
    }
}

Addition et soustraction

Utilisez add et subtract, en pensant à enregistrer le résultat. Chaque appel renvoie une nouvelle valeur.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal price = new BigDecimal("19.99");
        BigDecimal tax = new BigDecimal("1.60");
        BigDecimal total = price.add(tax);
        System.out.println(total);
    }
}

Multiplication

multiply fonctionne comme prévu. Notez que l’échelle du résultat est la somme des échelles des opérandes.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal unit = new BigDecimal("2.50");
        BigDecimal qty = new BigDecimal("3");
        System.out.println(unit.multiply(qty));
    }
}

La division demande de l’attention

La division de valeurs qui ne se divisent pas exactement, comme 1 par 3, produit un nombre décimal infini. Une simple opération divide lève alors une ArithmeticException.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal one = new BigDecimal("1");
        BigDecimal three = new BigDecimal("3");
        try {
            System.out.println(one.divide(three));
        } catch (ArithmeticException e) {
            System.out.println("Need to specify rounding!");
        }
    }
}

Division avec arrondi

Fournissez une échelle et un RoundingMode pour diviser sans risque. Ici, nous conservons deux décimales et arrondissons les moitiés vers le haut.

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        BigDecimal one = new BigDecimal("1");
        BigDecimal three = new BigDecimal("3");
        System.out.println(one.divide(three, 2, RoundingMode.HALF_UP));
    }
}

Comparer les valeurs

Utilisez compareTo pour comparer la valeur numérique. N’utilisez pas equals, car equals tient compte de l’échelle : 2.0 et 2.00 ne sont pas égaux selon equals, mais sont égaux selon compareTo.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("2.0");
        BigDecimal b = new BigDecimal("2.00");
        System.out.println(a.equals(b));
        System.out.println(a.compareTo(b) == 0);
    }
}

Constantes pratiques

BigDecimal propose des constantes prêtes à l’emploi : BigDecimal.ZERO, BigDecimal.ONE et BigDecimal.TEN. Utilisez-les au lieu de créer vos propres constantes.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal sum = BigDecimal.ZERO;
        sum = sum.add(BigDecimal.TEN);
        System.out.println(sum);
    }
}

Additionner une liste

Un schéma courant consiste à partir de BigDecimal.ZERO et à ajouter chaque valeur dans une boucle, en récupérant le résultat à chaque fois.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal[] prices = {
            new BigDecimal("1.10"),
            new BigDecimal("2.20"),
            new BigDecimal("3.30")
        };
        BigDecimal total = BigDecimal.ZERO;
        for (BigDecimal p : prices) {
            total = total.add(p);
        }
        System.out.println(total);
    }
}

Bonnes pratiques

Retenez l’essentiel : construisez les valeurs à partir de chaînes de caractères, traitez-les comme immuables, indiquez toujours un arrondi pour les divisions et comparez-les avec compareTo.

Vérification rapide

Évaluez vos connaissances sur BigDecimal.

Récapitulatif

Vous avez appris à utiliser BigDecimal :

  • Créez-le à partir d’une chaîne de caractères pour conserver les chiffres exacts
  • Il est immuable : récupérez donc le résultat de chaque opération
  • Utilisez directement add, subtract et multiply
  • divide nécessite une échelle et un RoundingMode pour les résultats qui ne se terminent pas
  • Comparez avec compareTo, et non avec equals

Questions Fréquemment Posées

La leçon « Travailler avec BigDecimal » est-elle gratuite ?

Oui — le texte complet de « Travailler avec BigDecimal » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Java Academy, passe à CoddyKit PRO. Le cours Java Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Travailler avec BigDecimal » ?

Arithmétique décimale exacte Tu pratiques Java Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Java Academy ?

Aucune expérience préalable n'est requise. Java Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Travailler avec BigDecimal » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Java Academy ?

Oui. Chaque leçon Java Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Pourquoi ne pas utiliser double pour l’argent
  2. Travailler avec BigDecimal
  3. Arrondi et échelle
  4. BigInteger pour les nombres gigantesques
← Retour à Java Academy