Kaip naudoti Java BigDecimal, kad būtų rodomi skaičiai su slankiuoju kableliu
Java klasė BigDecimal leidžia tiksliai apdoroti sudėtingus skaičius su slankiuoju kableliu. Juos sukūrus, galite taikyti įvairius metodus. Sintaksės struktūra visada yra ta pati, todėl lengva greitai susipažinti su klase.
Kas yra Java BigDecimal?
Java BigDecimal leidžia tiksliai rodyti ir apdoroti sudėtingus plaukiojančiojo kablelio skaičius, kurių dydis teoriškai gali būti bet koks. Šiame straipsnyje bus pateikti įvairūs šio klasės naudojimo būdai, pvz., apvalinimui, aritmetikai ar formato konvertavimui. Taip pat sužinosite, kaip ją įgyvendinti maišymo ir tikslių, sudėtingų palyginimų tikslais.
Java BigDecimal susideda iš 32 bitų sveikųjų skaičių skalės ir neskalės sveikųjų skaičių vertės su pasirinktiniu tikslumu. Šiuo atveju „skalė“ reiškia skaičių po kablelio, jei jis yra didesnis arba lygus nuliui. Tačiau jei vertė yra mažesnė už nulį, ji dauginama iš 10^(-skalė). Klasės dydis ribojamas tik kompiuterio atminties dydžiu. Tačiau tai yra labiau teorinis svarstymas, nes mažai tikėtina, kad programa sukurs skaičių, kuris viršytų jos turimą atmintį. Java BigDecimal yra skirtas tik slankiojo kablelio skaičiams, o BigInteger klasė naudojama sveikiesiems skaičiams apdoroti.
Kam reikalinga ši klasė?
Java BigDecimal tikslumo lygis nėra reikalingas kiekvienu atveju. Tačiau yra situacijų, kai jo tikslumas yra neįkainojamas. Pavyzdžiui, jis puikiai tinka elektroninės komercijos sandoriams, kuriuose net mažiausias dešimtainis skaičius gali turėti įtakos skaičiavimams. Ši klasė taip pat naudojama tikslioms statinėms analizėms atlikti. Programos, naudojamos lėktuvų ar raketų valdymui ir navigacijai, taip pat medicinos srityje, remiasi šia klase. Kitose srityse Java BigDecimal tikslumo lygis užtikrina geriausią įmanomą saugumą.
Kaip sukuriama objekto?
Norėdami naudoti BigDecimal Java kalboje, pirmiausia turėsite importuoti klasę į savo Java programą. Tai padarę, galėsite deklaruoti šios klasės objektą. Tada sukurkite norimą vertę kaip argumentą ir perduokite ją atitinkamam Java konstruktoriui. Baigę šį procesą, galėsite naudoti BigDecimals Java kalboje. Klasėje rasite įvairių metodų, kuriuos išsamiau paaiškinsime kitame skyriuje. Pirmiausia importuosime klasę ir deklaruosime du BigDecimal objektus:
/ / 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");
}
}javaDabar galite naudoti šiuos objektus su BigDecimal klasės metodais.
Java BigDecimal pavyzdžiai
Sukūrę objektus, galite naudoti įvairius metodus, kad juos panaudotumėte ir atliktumėte operacijas. Pažvelkime į keletą pavyzdžių, kad pamatytume, kaip tai veikia. Rezultatas gaunamas naudojant Java komandą System.out.println().
Dviejų BigDecimal pridėjimas
Jei norite sudėti du BigDecimal tipų skaičius Java kalboje, turite naudoti add() metodą. Tam reikia įrašyti du skaičius, kurių sumą norite apskaičiuoti. Mūsų pavyzdyje skaičius ExampleOne bus sudėtas su skaičiumi ExampleTwo.
ExampleOne =
ExampleOne.add(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaAtimti skaičius
Norėdami atimti dvi reikšmes viena iš kitos, reikia naudoti subtract() metodą. Kituose pavyzdžiuose atimame ExampleTwo iš ExampleOne.
ExampleOne =
ExampleOne.subtract(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaDauginti vertes
Metodas, kurį naudojate dviejų BigDecimal dauginimui Java kalboje, veikia panašiai. Jis vadinasi multiply(). Norėdami padauginti ExampleTwo iš ExampleOne, naudokite šį kodą:
ExampleOne =
ExampleOne.multiply(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaSkaičių dalijimas
Jei norite padalyti du BigDecimal objektus Java kalboje, naudokite divide() metodą. Jis atitinka tą pačią sintaksę kaip ir kiti pavyzdžiai ir atrodo taip:
ExampleOne =
ExampleOne.divide(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaTačiau tai veikia tik tuo atveju, jei rezultatas yra tikslus arba sveikasis skaičius. Jei taip nėra, bus rodomas šis klaidos pranešimas: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.. Tai apibūdina vykdymo klaidą. Norint to išvengti, yra įvairios apvalinimo parinktys metodui divide(), kurios gali būti perduodamos per java.math.RoundingMode. Galite pasirinkti iš šių konstantų:
| Konstanta | funkcija |
|---|---|
| LUBOS | Apvalina iki teigiamo begalybės |
| DOWN | Apvalina iki 0 |
| FLOOR | Apvalina iki neigiamo begalybės |
| PUSĖ_ŽEMYN | Apvalina iki artimiausio skaičiaus ir priešingo 0, jei abu yra vienodai nutolę |
| PUSĖ_LYGUS | Apvalina iki artimiausio skaičiaus ir artimiausio lygaus skaičiaus, jei abu yra vienodai nutolę |
| HALF_UP | Apvalina iki artimiausio skaičiaus ir 0 kryptimi, jei abu yra vienodai nutolę |
| UNNECESSARY | Aplenkia apvalinimą ir atlieka tik tikslias operacijas; gali būti naudojamas tik tuo atveju, jei dalybos yra tikslios |
| UP | Apvalina nuo 0 |
Svarbiausių metodų apžvalga
Dabar, kai jau išmokote naudoti BigDecimal Java kalboje, pateikiame svarbiausių metodų, kuriuos galite naudoti su juo, apžvalgą.
| Metodas | Funkcija |
|---|---|
| abs() | Grąžina BigDecimal su jo absoliučiąja verte |
| add() | Grąžina BigDecimal, kurio vertė sudaryta iš (this + Addend) |
| divide() | Išvesties vertė gaunama iš (this / Divisor) |
| max(BigDecimal val) | Išveda didžiausią BigDecimal vertę |
| min(BigDecimal val) | Išveda BigDecimal minimumą |
| movePointLeft(int n) | Išveda BigDecimal, kurio dešimtainis taškas perkeliamas į kairę vertės „n“ dydžiu |
| movePointRight(int n) | Išveda BigDecimal, kurio dešimtainis taškas buvo perkelta į dešinę „n“ vertės |
| multiply(BigDecimal multiplicand, MathContext mc) | Grąžina vertę, gautą iš (this * multiplicand) |
7a13b71b544a0a47b82b89c94cb2cba2
a043a1b67eddde60f587280a4ca1a324
bc7ff3cc8bd2c8e909d817f10f496251