Avrundning och skala
Styr precision och avrundningslägen
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
setScaleanger decimalerna och kräver enRoundingModeHALF_UPär vanlig avrundning ochHALF_EVENär bankernas avrundningCEILING,FLOOR,UPochDOWNtäcker riktad avrundning- Ange alltid en metod för division för att undvika undantag
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
- Varför inte double för pengar
- Arbeta med BigDecimal
- Avrundning och skala
- BigInteger för mycket stora tal