Java razred Big­De­ci­mal omogoča natančno obdelavo kom­ple­ksnih števil s plavajočo vejico. Ko so enkrat ustvar­je­na, lahko nanje uporabite različne metode. Struktura sintakse je vedno enaka, zato se je razreda enostavno in hitro naučiti.

Kaj je Java Big­De­ci­mal?

Java Big­De­ci­mal omogoča natančno pri­ka­zo­va­nje in obdelavo kom­ple­ksnih števil s plavajočo vejico, ki so te­o­re­tič­no lahko poljubne velikosti. V tem članku boste spoznali različne metode uporabe te razreda, bodisi za za­o­kro­že­va­nje, arit­me­ti­ko ali pretvorbo formata. Naučili se boste tudi, kako ga uporabiti za ha­shi­ra­nje in natančne, so­fi­sti­ci­ra­ne pri­mer­ja­ve.

Java Big­De­ci­mal je se­sta­vljen iz 32-bitne ce­lo­šte­vilč­ne lestvice in ne­ška­li­ra­jo­če ce­lo­šte­vilč­ne vrednosti z izbirno na­tanč­no­stjo. 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­ču­nal­ni­škim po­mnil­ni­kom. Čeprav je to bolj te­o­re­tič­no raz­mi­šlja­nje, saj je malo verjetno, da bo program ustvaril število, ki presega raz­po­lo­žlji­vi pomnilnik. Big­De­ci­mal v Javi je namenjen izključno za števila s plavajočo vejico, medtem ko se razred Bi­gIn­te­ger uporablja za obdelavo celih števil.

Za kaj je potrebna ta razred?

Raven na­tanč­no­sti Java Big­De­ci­mal ni potrebna za vsak scenarij. Vendar obstajajo situacije, v katerih je njena na­tanč­nost ne­pre­cen­lji­va. Na primer, dobro služi svojemu namenu v tran­sak­ci­jah 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 upo­ra­blja­jo za nadzor in na­vi­ga­ci­jo letal ali raket, se zanašajo na ta razred, prav tako pa tudi me­di­cin­ski segment. Na drugih področjih nivoji na­tanč­no­sti, ki jih ponuja Java Big­De­ci­mal, za­go­ta­vlja­jo najboljšo možno varnost.

Kako se ustvari objekt?

Da bi lahko upo­ra­blja­li Big­De­ci­mal v Javi, morate najprej uvoziti razred v svoj program Java. Ko to storite, lahko de­kla­ri­ra­te objekt tega razreda. Nato ustvarite želeno vrednost kot argument in jo prenesite v ustrezen Java kon­struk­tor. Ko za­klju­či­te ta postopek, lahko upo­ra­blja­te Big­De­ci­mals v Javi. V razredu boste našli različne metode, ki jih bomo po­drob­ne­je pojasnili v na­sle­dnjem poglavju. Najprej bomo uvozili razred in de­kla­ri­ra­li dva objekta Big­De­ci­mal:

/ / 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");
	}
}
java

Sedaj lahko te objekte upo­ra­blja­te z metodami za razred Big­De­ci­mal.

Primeri za Java Big­De­ci­mal

Ko ustvarite objekte, lahko uporabite različne metode za njihovo uporabo in izvajanje operacij. Poglejmo nekaj primerov, ki pri­ka­zu­je­jo, kako to deluje. Izhod se sproži z uporabo Java ukaza System.out.println().

Dodajanje dveh Big­De­ci­ma­lov

Če želite v Javi sešteti dve vrednosti Big­De­ci­mal, morate uporabiti metodo add(). Za to shranite dve vrednosti, katerih vsoto želite iz­ra­ču­na­ti. V našem primeru bomo vrednost ExampleOne sešteli z vre­dno­stjo ExampleTwo.

ExampleOne =
ExampleOne.add(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);
java

Od­šte­va­nje številk

Za od­šte­va­nje dveh vrednosti med seboj po­tre­bu­je­te metodo subtract(). V na­sle­dnjem primeru odštejemo ExampleTwo od ExampleOne.

ExampleOne =
ExampleOne.subtract(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);
java

Pomnožite vrednosti

Metoda, ki jo upo­ra­blja­te za množenje dveh Big­De­ci­ma­lov 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);
java

Deljenje številk

Če želite v Javi deliti dva objekta Big­De­ci­mal, 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);
java

Vendar 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 za­o­kro­že­va­nja za metodo divide(), ki se lahko prenesejo prek java.math.Ro­un­din­gMo­de. Izbirate lahko med na­sle­dnji­mi kon­stan­ta­mi:

Konstanta funkcija
STROP Zaokroži na pozitivno ne­skonč­nost
DOWN Zaokroži na 0
FLOOR Zaokroži na negativno ne­skonč­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
UN­NE­CES­SARY Izpušča za­o­kro­že­va­nje in izvaja samo natančne operacije; se lahko uporablja samo, če je delitev natančna
UP Zaokroži stran od 0

Pregled naj­po­memb­nej­ših metod

Sedaj, ko ste se naučili, kako upo­ra­blja­ti Big­De­ci­mal v Javi, si oglejte pregled nekaterih naj­po­memb­nej­ših metod, ki jih lahko upo­ra­blja­te z njim.

Metoda Funkcija
abs() Vrne Big­De­ci­mal z njegovo absolutno vre­dno­stjo
add() Vrne Big­De­ci­mal, katerega vrednost je se­sta­vlje­na iz (this + Addend)
divide() Izhodna vrednost je rezultat (this / Divisor)
max(Big­De­ci­mal val) Izpiše največjo vrednost Big­De­ci­mal
min(Big­De­ci­mal val) Izpiše najmanjšo vrednost Big­De­ci­mal
mo­ve­Po­in­tLeft(int n) Izpiše Big­De­ci­mal, pri katerem je decimalna vejica pre­ma­knje­na za vrednost ‘n’ v levo
mo­ve­Po­in­tRi­ght(int n) Izpiše Big­De­ci­mal, pri katerem je decimalna vejica pre­ma­knje­na v desno za vrednost ‘n’.
multiply(Big­De­ci­mal mul­ti­pli­cand, Ma­thCon­text mc) Vrne vrednost, ki je rezultat (this * mul­ti­pli­cand).

7a13b71b544a0a47b82b89c94cb2cba2

a043a1b67eddde60f587280a4ca1a324

bc7ff3cc8bd2c8e909d817f10f496251

388d113eebff89cedf1ec961d226da55

88e50c15131295c585c6b5056783b96e

3e97d1fcfc2e83c4520222b8d5ad9722

Go to Main Menu