Java Academy · Lektion

Avrundning och skala

Styr precision och avrundningslägen

Lektion 3 av 413 steg

Avrundning och skala är en gratis lektion i Java Academy på CoddyKit. Detta är lektion 3 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.

Skala och precision

Varje BigDecimal har en scale, det vill säga antalet siffror till höger om decimaltecknet. Värdet 12.340 har skalan 3. Genom att styra skalan kan Ni visa pengar med exakt två decimaler.

Inspektera skalan

Anropa scale() för att se hur många decimaler ett värde innehåller och precision() för det totala antalet signifikanta siffror.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("12.340");
        System.out.println(v.scale());
        System.out.println(v.precision());
    }
}

setScale för att ange decimaler

setScale tvingar ett värde till ett valt antal decimaler. Ni måste skicka med en RoundingMode om avrundning behövs.

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

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("12.3456");
        System.out.println(v.setScale(2, RoundingMode.HALF_UP));
    }
}

HALF_UP, den vanliga avrundningsmetoden

RoundingMode.HALF_UP avrundar till närmaste granne, och vid exakt halva avrundas värdet bort från noll. Det här är den vardagliga avrundning som man lär sig i skolan.

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

public class Main {
    public static void main(String[] args) {
        System.out.println(new BigDecimal("2.5").setScale(0, RoundingMode.HALF_UP));
        System.out.println(new BigDecimal("3.5").setScale(0, RoundingMode.HALF_UP));
    }
}

HALF_EVEN, bankernas avrundning

HALF_EVEN avrundar exakt halva värden mot den närmaste jämna siffran. Det minskar snedvridningen efter många avrundningar, vilket är anledningen till att banker föredrar metoden.

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

public class Main {
    public static void main(String[] args) {
        System.out.println(new BigDecimal("2.5").setScale(0, RoundingMode.HALF_EVEN));
        System.out.println(new BigDecimal("3.5").setScale(0, RoundingMode.HALF_EVEN));
    }
}

CEILING och FLOOR

CEILING avrundar alltid mot positiv oändlighet, medan FLOOR alltid avrundar mot negativ oändlighet, oavsett vilken siffra som tas bort.

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

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("2.1");
        System.out.println(v.setScale(0, RoundingMode.CEILING));
        System.out.println(v.setScale(0, RoundingMode.FLOOR));
    }
}

DOWN och UP

DOWN trunkerar mot noll, medan UP alltid avrundar bort från noll. DOWN är enkel trunkering.

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

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("2.9");
        System.out.println(v.setScale(0, RoundingMode.DOWN));
        System.out.println(v.setScale(0, RoundingMode.UP));
    }
}

Avrundning under division

Division kan ge oändliga decimalutvecklingar, så Ni anger skalan och avrundningsmetoden direkt i anropet till divide.

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

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

Ta bort avslutande nollor

stripTrailingZeros tar bort extra nollor. Kombinera det med toPlainString för att undvika vetenskaplig notation i resultatet.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("12.300");
        System.out.println(v.stripTrailingZeros().toPlainString());
    }
}

Formatera pengar

För visning anger Ni skalan 2 med HALF_UP, så att priser alltid visas med två decimaler, även när beloppen är heltal.

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

public class Main {
    public static void main(String[] args) {
        BigDecimal amount = new BigDecimal("7");
        System.out.println(amount.setScale(2, RoundingMode.HALF_UP));
    }
}

Välj en metod

Välj HALF_UP för vanlig avrundning som visas för användare och HALF_EVEN för bokföring, eftersom den minskar ackumulerad snedvridning. Ange alltid en metod, så att koden aldrig kastar ett undantag för icke-terminerande resultat.

Snabbtest

Testa Era kunskaper om skala och avrundning.

Sammanfattning

Ni har lärt Er att styra precisionen:

  • Skalan är antalet siffror efter decimaltecknet
  • setScale anger decimalerna och kräver en RoundingMode
  • HALF_UP är vanlig avrundning och HALF_EVEN är bankernas avrundning
  • CEILING, FLOOR, UP och DOWN täcker riktad avrundning
  • Ange alltid en metod för division för att undvika undantag
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 ”Avrundning och skala” gratis?

Ja – hela texten till ”Avrundning och skala” 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 ”Avrundning och skala”?

Styr precision och avrundningslägen 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 3 av 4.

Hur lång tid tar lektionen ”Avrundning och skala”?

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