Arbeta med BigDecimal
Exakt decimalaritmetik
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,subtractochmultiplydirekt dividebehöver en skala ochRoundingModeför icke-terminerande resultat- Jämför med
compareTo, inteequals
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
- Varför inte double för pengar
- Arbeta med BigDecimal
- Avrundning och skala
- BigInteger för mycket stora tal