Kako uporabiti Java BigDecimal za prikaz številk s plavajočo vejico
Java razred BigDecimal omogoča natančno obdelavo kompleksnih števil s plavajočo vejico. Ko so enkrat ustvarjena, lahko nanje uporabite različne metode. Struktura sintakse je vedno enaka, zato se je razreda enostavno in hitro naučiti.
Kaj je Java BigDecimal?
Java BigDecimal omogoča natančno prikazovanje in obdelavo kompleksnih števil s plavajočo vejico, ki so teoretično lahko poljubne velikosti. V tem članku boste spoznali različne metode uporabe te razreda, bodisi za zaokroževanje, aritmetiko ali pretvorbo formata. Naučili se boste tudi, kako ga uporabiti za hashiranje in natančne, sofisticirane primerjave.
Java BigDecimal je sestavljen iz 32-bitne celoštevilčne lestvice in neškalirajoče celoštevilčne vrednosti z izbirno natančnostjo. V tem primeru »lestvica« pomeni število mest po decimalni vejici, če so ta večja ali enaka nič. Če pa je vrednost manjša od nič, se pomnoži z 10^(-lestvica). Velikost razreda je omejena le z računalniškim pomnilnikom. Čeprav je to bolj teoretično razmišljanje, saj je malo verjetno, da bo program ustvaril število, ki presega razpoložljivi pomnilnik. BigDecimal v Javi je namenjen izključno za števila s plavajočo vejico, medtem ko se razred BigInteger uporablja za obdelavo celih števil.
Za kaj je potrebna ta razred?
Raven natančnosti Java BigDecimal ni potrebna za vsak scenarij. Vendar obstajajo situacije, v katerih je njena natančnost neprecenljiva. Na primer, dobro služi svojemu namenu v transakcijah e-trgovine, kjer lahko na izračune vpliva tudi najmanjša decimalna mesta. Razred se uporablja tudi za izvajanje natančnih statičnih analiz. Programi, ki se uporabljajo za nadzor in navigacijo letal ali raket, se zanašajo na ta razred, prav tako pa tudi medicinski segment. Na drugih področjih nivoji natančnosti, ki jih ponuja Java BigDecimal, zagotavljajo najboljšo možno varnost.
Kako se ustvari objekt?
Da bi lahko uporabljali BigDecimal v Javi, morate najprej uvoziti razred v svoj program Java. Ko to storite, lahko deklarirate objekt tega razreda. Nato ustvarite želeno vrednost kot argument in jo prenesite v ustrezen Java konstruktor. Ko zaključite ta postopek, lahko uporabljate BigDecimals v Javi. V razredu boste našli različne metode, ki jih bomo podrobneje pojasnili v naslednjem poglavju. Najprej bomo uvozili razred in deklarirali dva objekta BigDecimal:
/ / 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");
}
}javaSedaj lahko te objekte uporabljate z metodami za razred BigDecimal.
Primeri za Java BigDecimal
Ko ustvarite objekte, lahko uporabite različne metode za njihovo uporabo in izvajanje operacij. Poglejmo nekaj primerov, ki prikazujejo, kako to deluje. Izhod se sproži z uporabo Java ukaza System.out.println().
Dodajanje dveh BigDecimalov
Če želite v Javi sešteti dve vrednosti BigDecimal, morate uporabiti metodo add(). Za to shranite dve vrednosti, katerih vsoto želite izračunati. V našem primeru bomo vrednost ExampleOne sešteli z vrednostjo ExampleTwo.
ExampleOne =
ExampleOne.add(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaOdštevanje številk
Za odštevanje dveh vrednosti med seboj potrebujete metodo subtract(). V naslednjem primeru odštejemo ExampleTwo od ExampleOne.
ExampleOne =
ExampleOne.subtract(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaPomnožite vrednosti
Metoda, ki jo uporabljate za množenje dveh BigDecimalov v Javi, deluje podobno. Imenuje se multiply(). Za množenje ExampleTwo z ExampleOne uporabite naslednjo kodo:
ExampleOne =
ExampleOne.multiply(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaDeljenje številk
Če želite v Javi deliti dva objekta BigDecimal, uporabite metodo divide(). Ta sledi isti sintaksi kot drugi primeri in izgleda takole:
ExampleOne =
ExampleOne.divide(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaVendar to deluje le, če je rezultat natančen ali celo število. Če to ni tako, se prikaže naslednje sporočilo o napaki: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.. To opisuje napako v času izvajanja. Da bi se temu izognili, obstajajo različne možnosti zaokroževanja za metodo divide(), ki se lahko prenesejo prek java.math.RoundingMode. Izbirate lahko med naslednjimi konstantami:
| Konstanta | funkcija |
|---|---|
| STROP | Zaokroži na pozitivno neskončnost |
| DOWN | Zaokroži na 0 |
| FLOOR | Zaokroži na negativno neskončnost |
| HALF_DOWN | Zaokroži na najbližje sosednje število in nasprotno od 0, če sta oba enako oddaljena |
| HALF_EVEN | Zaokroži na naslednje sosednje število in na naslednje sodo število, če sta oba enako oddaljena |
| HALF_UP | Zaokroži na najbližje sosednje število in v smeri 0, če sta oba enako oddaljena |
| UNNECESSARY | Izpušča zaokroževanje in izvaja samo natančne operacije; se lahko uporablja samo, če je delitev natančna |
| UP | Zaokroži stran od 0 |
Pregled najpomembnejših metod
Sedaj, ko ste se naučili, kako uporabljati BigDecimal v Javi, si oglejte pregled nekaterih najpomembnejših metod, ki jih lahko uporabljate z njim.
| Metoda | Funkcija |
|---|---|
| abs() | Vrne BigDecimal z njegovo absolutno vrednostjo |
| add() | Vrne BigDecimal, katerega vrednost je sestavljena iz (this + Addend) |
| divide() | Izhodna vrednost je rezultat (this / Divisor) |
| max(BigDecimal val) | Izpiše največjo vrednost BigDecimal |
| min(BigDecimal val) | Izpiše najmanjšo vrednost BigDecimal |
| movePointLeft(int n) | Izpiše BigDecimal, pri katerem je decimalna vejica premaknjena za vrednost ‘n’ v levo |
| movePointRight(int n) | Izpiše BigDecimal, pri katerem je decimalna vejica premaknjena v desno za vrednost ‘n’. |
| multiply(BigDecimal multiplicand, MathContext mc) | Vrne vrednost, ki je rezultat (this * multiplicand). |
7a13b71b544a0a47b82b89c94cb2cba2
a043a1b67eddde60f587280a4ca1a324
bc7ff3cc8bd2c8e909d817f10f496251
388d113eebff89cedf1ec961d226da55
88e50c15131295c585c6b5056783b96e
3e97d1fcfc2e83c4520222b8d5ad9722