Java BigDecimalin käyttö liukulukuisten lukujen näyttämiseen
Java-luokka BigDecimal mahdollistaa monimutkaisten liukulukuisten lukujen tarkan käsittelyn. Kun ne on luotu, voit soveltaa niihin erilaisia menetelmiä. Syntaksin rakenne on aina sama, joten luokkaan on helppo tutustua nopeasti.
Mikä on Java BigDecimal?
Java BigDecimalin avulla voit näyttää ja käsitellä tarkasti monimutkaisia liukulukuja, joiden koko voi teoriassa olla mikä tahansa. Tässä artikkelissa esitellään erilaisia tapoja käyttää tätä luokkaa, olipa kyse sitten pyöristämisestä, aritmeettisista laskuista tai muotojen muuntamisesta. Opit myös, miten sitä voidaan käyttää hajauttamiseen ja tarkkoihin, monimutkaisiin vertailuihin.
Java BigDecimal koostuu 32-bittisestä kokonaislukuskaalasta ja skaalaamattomasta kokonaislukuarvosta, jonka tarkkuus on valinnainen. Tässä tapauksessa “skaala” tarkoittaa desimaalipisteen jälkeisten numeroiden lukumäärää, edellyttäen että ne ovat suurempia tai yhtä suuria kuin nolla. Jos arvo on kuitenkin pienempi kuin nolla, se kerrotaan 10^(-skaala) -arvolla. Luokan kokoa rajoittaa vain tietokoneen muisti. Tämä on kuitenkin enemmän teoreettinen huomio, koska on epätodennäköistä, että ohjelma luo luvun, joka ylittää sen käytettävissä olevan muistin. Java-kielessä BigDecimal on tarkoitettu yksinomaan liukulukuille, kun taas BigInteger-luokkaa käytetään kokonaislukujen käsittelyyn.
Mihin luokkaa tarvitaan?
Java BigDecimalin tarkkuustasoa ei tarvita kaikissa tilanteissa. On kuitenkin tilanteita, joissa sen tarkkuus on korvaamatonta. Se palvelee esimerkiksi hyvin verkkokaupan transaktioissa, joissa pienimmätkin desimaalit voivat vaikuttaa laskelmiin. Luokkaa käytetään myös tarkkojen staattisten analyysien suorittamiseen. Lentokoneiden ja rakettien ohjaukseen ja navigointiin käytettävät ohjelmat luottavat luokkaan, samoin kuin lääketieteen ala. Muilla aloilla Java BigDecimalin tarjoama tarkkuusluokka tarjoaa parhaan mahdollisen turvallisuuden.
Miten objekti luodaan?
Jotta voit käyttää BigDecimal-luokkaa Java-kielessä, sinun on ensin tuotava luokka Java-ohjelmaasi. Kun olet tehnyt tämän, voit määritellä tämän luokan objektin. Seuraavaksi luo haluttu arvo argumenttina ja välitä se sopivaan Java-konstruktoriin. Kun olet suorittanut tämän prosessin, voit käyttää BigDecimalsia Java-kielessä. Luokasta löydät erilaisia menetelmiä, joita selitämme tarkemmin seuraavassa osassa. Ensin tuomme luokan ja julistamme kaksi BigDecimal-objektia:
/ / Your Java program for the BigDecimal class
import java.math.BigDecimal;
public class BigDecimalExample
{
public static void main(String[] args)
{
/ / Create two new BigDecimals
BigDecimal ExampleOne =
new BigDecimal ("1275936001.744297361");
BigDecimal ExampleTwo =
new BigDecimal ("4746691047.132719503");
}
}javaNyt voit käyttää näitä objekteja BigDecimal-luokan menetelmien kanssa.
Esimerkkejä Java BigDecimalista
Kun olet luonut objektit, voit käyttää erilaisia menetelmiä objektien käyttämiseen ja toimintojen suorittamiseen. Katsotaanpa muutamia esimerkkejä, jotka osoittavat, miten tämä toimii. Tuloste käynnistetään Java-komennolla System.out.println().
Kahden BigDecimal-tyyppisen arvon lisääminen
Jos haluat lisätä kaksi BigDecimal-arvoa Java-kielessä, sinun on käytettävä add(). Tätä varten tallenna kaksi arvoa, joiden summan haluat laskea. Esimerkissämme arvo ExampleOne lisätään arvoon ExampleTwo.
ExampleOne =
ExampleOne.add(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaVähennä numeroita
Kahden arvon vähentämiseksi toisistaan tarvitaan menetelmä subtract(). Seuraavassa esimerkissä vähennämme ExampleTwo ExampleOne.
ExampleOne =
ExampleOne.subtract(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaKerro arvot
Java-kielessä kahden BigDecimal-tyyppisen luvun kertomiseen käytetty menetelmä toimii samalla tavalla. Se on nimeltään multiply(). Jos haluat kertoa ExampleTwo ja ExampleOne, käytä seuraavaa koodia:
ExampleOne =
ExampleOne.multiply(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaLukujen jakaminen
Jos haluat jakaa kaksi BigDecimal-objektia Java-kielessä, käytä divide() menetelmää. Se noudattaa samaa syntaksia kuin muut esimerkit ja näyttää tältä:
ExampleOne =
ExampleOne.divide(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaTämä toimii kuitenkin vain, jos tulos on tarkka tai kokonaisluku. Jos näin ei ole, seuraava virheilmoitus tulostetaan: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.. Tämä kuvaa ajonaikaista virhettä. Tämän välttämiseksi divide()-metodille on olemassa erilaisia pyöristysvaihtoehtoja, jotka voidaan välittää java.math.RoundingMode-muuttujan kautta. Voit valita seuraavista vakioista:
| Vakio | Funktio |
|---|---|
| CEILING | Pyöristää positiiviseen äärettömään |
| DOWN | Pyöristää arvoon 0 |
| FLOOR | Pyöristää negatiiviseen äärettömään |
| HALF_DOWN | Pyöristää lähimpään naapurilukuun ja 0:n vastakohtaan, jos molemmat ovat yhtä kaukana |
| HALF_EVEN | Pyöristää seuraavaan lähimpään lukuun ja seuraavaan parilliseen lukuun, jos molemmat ovat yhtä kaukana |
| HALF_UP | Pyöristää lähimpään naapurilukuun ja suuntaan 0, edellyttäen että ne ovat molemmat yhtä kaukana |
| UNNECESSARY | Ohittaa pyöristämisen ja suorittaa vain tarkkoja laskutoimituksia; voidaan käyttää vain, jos jakolasku on tarkka |
| UP | Pyöristää pois 0:sta |
Tärkeimpien menetelmien yleiskatsaus
Nyt kun olet oppinut käyttämään BigDecimal-luokkaa Java-kielessä, tässä on yleiskatsaus tärkeimmistä menetelmistä, joita voit käyttää sen kanssa.
| Menetelmä | Funktio |
|---|---|
| abs() | Palauttaa BigDecimal-arvon, jonka absoluuttinen arvo on |
| add() | Palauttaa BigDecimal-arvon, jonka arvo koostuu (tämä + lisättävä) |
| divide() | Tulostusarvo on (tämä / jakaja) |
| max(BigDecimal val) | Tulostaa BigDecimal-arvon suurimman arvon |
| min(BigDecimal val) | Tulostaa BigDecimal-tyypin pienimmän arvon |
| movePointLeft(int n) | Tulostaa BigDecimal-arvon, jossa desimaalipiste on siirretty vasemmalle arvolla ‘n’ |
| movePointRight(int n) | Tulostaa BigDecimal-arvon, jossa desimaalipiste on siirretty oikealle arvolla ‘n’. |
| multiply(BigDecimal multiplicand, MathContext mc) | Palauttaa arvon, joka on tulos (this * multiplicand). |
df1ab6b5e7dcaaf3bfafd5b27d6b5900