Java Academy · Oppitunti

Pyöristys ja skaala

Hallitse tarkkuutta ja pyöristystapoja

Oppitunti 3/413 vaihetta

Pyöristys ja skaala on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 4 oppituntia.

Skaala ja tarkkuus

Jokaisella BigDecimal-arvolla on skaala, joka kertoo desimaalipisteen oikealla puolella olevien numeroiden määrän. Arvon 12.340 skaala on 3. Skaalan hallinnan avulla voitte esittää rahasummat täsmälleen kahdella desimaalilla.

Skaalan tarkasteleminen

Kutsukaa scale()-metodia nähdäksenne, kuinka monta desimaalia arvo sisältää, ja precision()-metodia saadaksenne merkitsevien numeroiden kokonaismäärän.

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 desimaalien määrittämiseen

setScale pakottaa arvon haluttuun desimaalien määrään. Jos pyöristystä tarvitaan, sille on annettava RoundingMode.

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, yleinen pyöristystapa

RoundingMode.HALF_UP pyöristää lähimpään arvoon ja tasatilanteissa poispäin nollasta. Tämä on arkinen pyöristystapa, jota opetetaan koulussa.

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, pankkiirien pyöristys

HALF_EVEN pyöristää tasatilanteissa lähimpään parilliseen numeroon. Tämä vähentää harhaa useiden pyöristysten aikana, minkä vuoksi pankit suosivat sitä.

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 ja FLOOR

CEILING pyöristää aina kohti positiivista ääretöntä ja FLOOR aina kohti negatiivista ääretöntä riippumatta poistettavasta numerosta.

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 ja UP

DOWN katkaisee arvon kohti nollaa, kun taas UP pyöristää aina poispäin nollasta. DOWN on yksinkertainen katkaisu.

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

Pyöristäminen jakamisen aikana

Jakaminen voi tuottaa päättymättömiä desimaaleja, joten skaala ja pyöristystapa annetaan suoraan divide-kutsussa.

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

Lopun nollien poistaminen

stripTrailingZeros poistaa ylimääräiset nollat. Yhdistäkää se toPlainString-metodiin, jotta tulosteessa ei käytetä tieteellistä merkintätapaa.

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

Rahan muotoilu

Asettakaa esityksen skaala arvoon 2 ja käyttäkää HALF_UP-pyöristystä, jotta hinnoissa näkyy aina kaksi desimaalia myös kokonaisina olevissa summissa.

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

Pyöristystavan valinta

Valitkaa HALF_UP tavalliseen käyttäjälle näkyvään pyöristykseen ja HALF_EVEN kirjanpitoon, jotta kumulatiivinen harha vähenee. Määrittäkää pyöristystapa aina, jotta koodi ei aiheuta poikkeusta päättymättömien tulosten yhteydessä.

Pikatesti

Testatkaa tietonne skaalasta ja pyöristyksestä.

Kertaus

Opitte hallitsemaan tarkkuutta:

  • Skaala on desimaalipisteen jälkeisten numeroiden määrä
  • setScale määrittää desimaalien määrän ja edellyttää RoundingMode-arvoa
  • HALF_UP on arkinen pyöristystapa ja HALF_EVEN pankkiirien pyöristystapa
  • CEILING, FLOOR, UP ja DOWN kattavat suunnatun pyöristyksen
  • Määrittäkää jakamiselle aina pyöristystapa, jotta poikkeuksia ei synny
Aloita maksutta

Opi Java tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
104
Oppitunnit
374

Usein kysytyt kysymykset

Onko oppitunti ”Pyöristys ja skaala” ilmainen?

Kyllä – oppitunnin ”Pyöristys ja skaala” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Pyöristys ja skaala”?

Hallitse tarkkuutta ja pyöristystapoja Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Pyöristys ja skaala”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?

Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Miksi doublea ei käytetä rahalle
  2. BigDecimalin käyttö
  3. Pyöristys ja skaala
  4. BigInteger suurille luvuille
← Takaisin: Java Academy