Java Academy · Lektion

Arbeta med BigDecimal

Exakt decimalaritmetik

Lektion 2 av 413 steg

Arbeta med BigDecimal är en gratis lektion i Java Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Java Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Java Academy innehåller totalt 4 lektioner.

Exakt decimalaritmetik

BigDecimal från paketet java.math representerar decimaltal med godtycklig precision och utan dolda avrundningsfel. Det är standardverktyget för finansiella beräkningar.

Skapa en BigDecimal

Det säkraste sättet att skapa en BigDecimal är från en sträng. Då bevaras exakt de siffror Ni angav.

import java.math.BigDecimal;

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

Oföränderlighet

BigDecimal är oföränderlig. Operationer som add ändrar inte originalet, utan returnerar en ny BigDecimal. Ni måste spara det returnerade värdet.

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 och subtraktion

Använd add och subtract, och kom ihåg att spara resultatet. Varje anrop returnerar ett nytt värde.

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);
    }
}

Multiplikation

multiply fungerar som förväntat. Observera att resultatets skala är summan av operandernas skalor.

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));
    }
}

Division kräver omsorg

Division av värden som inte går jämnt upp, till exempel 1 delat med 3, ger en oändlig decimalutveckling. Då kastar vanlig divide ett 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 med avrundning

Ange en skala och en RoundingMode för att dividera säkert. Här behåller vi två decimaler och avrundar hälften uppåt.

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));
    }
}

Jämför värden

Använd compareTo för att jämföra numeriska värden. Använd inte equals, eftersom equals även tar hänsyn till skalan. Därför är 2.0 och 2.00 inte lika med equals, men lika med 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);
    }
}

Praktiska konstanter

BigDecimal erbjuder färdiga konstanter: BigDecimal.ZERO, BigDecimal.ONE och BigDecimal.TEN. Använd dem i stället för att skapa egna.

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);
    }
}

Summera en lista

Ett vanligt mönster är att börja med BigDecimal.ZERO och addera varje värde i en loop, där resultatet sparas varje gång.

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);
    }
}

Bästa praxis

Kom ihåg det viktigaste: skapa värden från strängar, behandla dem som oföränderliga, ange alltid avrundning för division och jämför med compareTo.

Snabbtest

Testa Era kunskaper om BigDecimal.

Sammanfattning

Ni har lärt Er att arbeta med BigDecimal:

  • Skapa det från en sträng för att bevara exakta siffror
  • Det är oföränderligt, så spara resultatet av varje operation
  • Använd add, subtract och multiply direkt
  • divide behöver en skala och RoundingMode för icke-terminerande resultat
  • Jämför med compareTo, inte equals
Gratis att börja

Lär dig Java med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
104
Lektioner
374

Vanliga frågor

Är lektionen ”Arbeta med BigDecimal” gratis?

Ja – hela texten till ”Arbeta med BigDecimal” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Java Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Java Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Arbeta med BigDecimal”?

Exakt decimalaritmetik Ni övar på Java Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Java Academy?

Du behöver inga förkunskaper. Utbildningen i Java Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Arbeta med BigDecimal”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Java Academy-lektionen?

Ja. Varje Java Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Varför inte double för pengar
  2. Arbeta med BigDecimal
  3. Avrundning och skala
  4. BigInteger för mycket stora tal
← Tillbaka till Java Academy