Trieda Java BigDecimal umožňuje spracovávať zložité čísla s pohyblivou desatinnou čiarkou s presnosťou. Po ich vytvorení môžete na ne použiť rôzne metódy. Štruktúra syntaxe je vždy rovnaká, takže sa s triedou ľahko a rýchlo zoznámite.

Čo je Java BigDecimal?

Java BigDecimal vám umožňuje presne zobrazovať a spracovávať zložité čísla s pohyblivou desatinnou čiarkou prakticky ľubovoľnej veľkosti. V tomto článku vám ukážeme rôzne metódy použitia tejto triedy, či už na zaokrúhľovanie, aritmetické operácie alebo konverziu formátu. Naučíte sa tiež, ako ju implementovať na hašovanie a na presné, sofistikované porovnávanie.

Java BigDecimal sa skladá z 32-bitového celočíselného meradla a nemeranej celočíselnej hodnoty s voliteľnou presnosťou. V tomto prípade „meradlo“ znamená počet číslic za desatinnou čiarkou, za predpokladu, že sú väčšie alebo rovné nule. Ak je však hodnota menšia ako nula, vynásobí sa 10^(-meradlo). Veľkosť triedy je obmedzená iba pamäťou počítača. Ide však skôr o teoretickú úvahu, pretože je nepravdepodobné, že program vytvorí číslo, ktoré presiahne dostupnú pamäť. BigDecimal v Jave je určený výlučne pre čísla s pohyblivou desatinnou čiarkou, zatiaľ čo trieda BigInteger sa používa na spracovanie celých čísel.

Na čo je táto trieda potrebná?

Úroveň presnosti Java BigDecimal nie je potrebná v každom prípade. Existujú však situácie, v ktorých je jej presnosť neoceniteľná. Napríklad dobre slúži svojmu účelu v transakciách elektronického obchodu, kde aj najmenšie desatinné miesto môže ovplyvniť výpočty. Táto trieda sa používa aj na vykonávanie presných statických analýz. Programy používané na riadenie a navigáciu lietadiel alebo rakiet sa spoliehajú na túto triedu, rovnako ako medicínsky segment. V iných oblastiach poskytuje úroveň presnosti, ktorú ponúka Java BigDecimal, najlepšiu možnú bezpečnosť.

Ako sa vytvára objekt?

Ak chcete používať BigDecimal v Jave, musíte najskôr importovať triedu do svojho programu Java. Akonáhle tak urobíte, môžete deklarovať objekt tejto triedy. Ďalej vytvorte požadovanú hodnotu ako argument a odovzdajte ju príslušnému konštruktoru Java. Po dokončení tohto procesu môžete používať BigDecimals v Jave. V triede nájdete rôzne metódy, ktoré podrobnejšie vysvetlíme v nasledujúcej časti. Najskôr importujeme triedu a deklarujeme dva objekty 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");
	}
}
java

Teraz môžete tieto objekty používať s metódami triedy BigDecimal.

Príklady pre Java BigDecimal

Po vytvorení objektov môžete použiť rôzne metódy na ich použitie a vykonávanie operácií. Pozrime sa na niekoľko príkladov, ktoré vám ukážu, ako to funguje. Výstup sa spustí pomocou príkazu Java System.out.println().

Pridanie dvoch čísel typu BigDecimal

Ak chcete v Jave sčítať dve hodnoty typu BigDecimal, musíte použiť metódu add(). Na to je potrebné uložiť dve hodnoty, ktorých súčet chcete vypočítať. V našom príklade sa k hodnote ExampleTwo pripočíta hodnota ExampleOne.

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

Odčítanie čísel

Na odčítanie dvoch hodnôt od seba potrebujete metódu subtract(). V nasledujúcom príklade odpočítame ExampleTwo od ExampleOne.

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

Vynásobte hodnoty

Metóda, ktorú používate na násobenie dvoch čísel typu BigDecimal v jazyku Java, funguje podobne. Volá sa multiply(). Na násobenie ExampleTwo a ExampleOne použite nasledujúci kód:

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

Delenie čísel

Ak chcete v Jave rozdeliť dva objekty BigDecimal, použite metódu divide(). Táto metóda má rovnakú syntax ako ostatné príklady a vyzerá takto:

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

To však funguje len v prípade, ak je výsledok presný alebo celé číslo. Ak tomu tak nie je, zobrazí sa nasledujúca chybová správa: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.. Ide o chybu behu programu. Aby sa tomu zabránilo, existujú rôzne možnosti zaokrúhľovania pre metódu divide(), ktoré sa dajú preniesť prostredníctvom java.math.RoundingMode. Môžete si vybrať z nasledujúcich konštánt:

Konštanta Funkcia
STROP Zaokrúhľuje na kladnú nekonečnosť
DOWN Zaokrúhľuje na 0
FLOOR Zaokrúhľuje na zápornú nekonečnosť
HALF_DOWN Zaokrúhľuje na najbližšie susedné číslo a na opačnú hodnotu ako 0, ak sú obe rovnako vzdialené
HALF_EVEN Zaokrúhľuje na najbližšie susedné číslo a na najbližšie párne číslo, ak sú obe rovnako vzdialené
HALF_UP Zaokrúhľuje na najbližšie susedné číslo a v smere 0, ak sú obe rovnako vzdialené
UNNECESSARY Vynechá zaokrúhľovanie a vykonáva iba presné operácie; možno použiť iba v prípade, ak je delenie presné
UP Zaokrúhľuje od 0

Prehľad najdôležitejších metód

Teraz, keď ste sa naučili používať BigDecimal v Jave, tu je prehľad niektorých z najdôležitejších metód, ktoré s ním môžete používať.

Metóda Funkcia
abs() Vráti BigDecimal s jeho absolútnou hodnotou
add() Vráti hodnotu BigDecimal, ktorej hodnota sa skladá z (toto + sčítanec)
divide() Výstupná hodnota je výsledkom (toto / deliteľ)
max(BigDecimal val) Vráti maximálnu hodnotu BigDecimal
min(BigDecimal val) Vypíše minimum BigDecimal
movePointLeft(int n) Vypíše BigDecimal, kde desatinná čiarka bola posunutá doľava o hodnotu „n“
movePointRight(int n) Vypíše BigDecimal, kde desatinná čiarka bola posunutá doprava o hodnotu „n“
multiply(BigDecimal multiplicand, MathContext mc) Vráti hodnotu, ktorá je výsledkom (this * multiplicand).
Prejsť na hlavné menu