Ako používať Java BigDecimal na zobrazenie čísel s pohyblivou desatinnou čiarkou
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");
}
}javaTeraz 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);javaOdčí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);javaVyná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);javaDelenie čí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);javaTo 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). |