Pyöristys ja skaala
Hallitse tarkkuutta ja pyöristystapoja
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ä
setScalemäärittää desimaalien määrän ja edellyttääRoundingMode-arvoaHALF_UPon arkinen pyöristystapa jaHALF_EVENpankkiirien pyöristystapaCEILING,FLOOR,UPjaDOWNkattavat suunnatun pyöristyksen- Määrittäkää jakamiselle aina pyöristystapa, jotta poikkeuksia ei synny
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.