Třída Java BigDecimal umožňuje přesné zpracování složitých čísel s plovoucí desetinnou čárkou. Po jejich vytvoření na ně můžete aplikovat různé metody. Struktura syntaxe je vždy stejná, takže se s touto třídou snadno a rychle seznámíte.

Co je Java BigDecimal?

Java BigDecimal umožňuje přesně zobrazovat a zpracovávat složité čísla s plovoucí desetinnou čárkou teoreticky jakékoli velikosti. Tento článek vám ukáže různé způsoby použití této třídy, ať už pro zaokrouhlování, aritmetiku nebo převod formátu. Dozvíte se také, jak ji implementovat pro hašování a pro přesné, sofistikované porovnávání.

Java BigDecimal se skládá z 32bitového celočíselného měřítka a neškálované celočíselné hodnoty s volitelnou přesností. V tomto případě „měřítko“ znamená počet číslic za desetinnou čárkou, pokud jsou větší nebo rovny nule. Pokud je však hodnota menší než nula, je vynásobena 10^(-měřítko). Velikost třídy je omezena pouze pamětí počítače. Jedná se však spíše o teoretickou úvahu, protože je nepravděpodobné, že by program vytvořil číslo, které by překročilo dostupnou paměť. BigDecimal v Javě je určen výhradně pro čísla s plovoucí desetinnou čárkou, zatímco třída BigInteger se používá pro zpracování celých čísel.

K čemu je tato třída potřebná?

Úroveň přesnosti Java BigDecimal není nutná pro každý scénář. Existují však situace, kdy je její přesnost neocenitelná. Například dobře slouží při transakcích v elektronickém obchodování, kde i nejmenší desetinné místo může mít vliv na výpočty. Třída se také používá k provádění přesných statických analýz. Programy používané pro řízení a navigaci letadel nebo raket se na tuto třídu spoléhají, stejně jako lékařský segment. V jiných oblastech poskytuje úroveň přesnosti Java BigDecimal nejlepší možnou bezpečnost.

Jak se vytváří objekt?

Chcete-li použít BigDecimal v Javě, musíte nejprve importovat třídu do svého programu Java. Jakmile to uděláte, můžete deklarovat objekt této třídy. Dále vytvořte požadovanou hodnotu jako argument a předávejte ji příslušnému konstruktoru Java. Jakmile tento proces dokončíte, můžete používat BigDecimals v Javě. V rámci třídy najdete různé metody, které podrobněji vysvětlíme v následující části. Nejprve importujeme třídu 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

Nyní můžete tyto objekty používat s metodami třídy BigDecimal.

Příklady pro Java BigDecimal

Jakmile objekty vytvoříte, můžete je používat různými způsoby a provádět s nimi různé operace. Podívejme se na několik příkladů, které vám ukážou, jak to funguje. Výstup se spouští pomocí příkazu Java System.out.println().

Sčítání dvou čísel typu BigDecimal

Pokud chcete v Javě sčítat dvě hodnoty typu BigDecimal, musíte použít metodu add(). K tomu uložte dvě hodnoty, jejichž součet chcete vypočítat. V našem příkladu bude hodnota ExampleOne přičtena k hodnotě ExampleTwo.

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

Odečíst čísla

Chcete-li odečíst dvě hodnoty od sebe, potřebujete metodu subtract(). V následujícím příkladu odečteme ExampleTwo od ExampleOne.

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

Násobte hodnoty

Metoda, kterou používáte k násobení dvou čísel typu BigDecimal v Javě, funguje podobně. Nazývá se multiply(). Chcete-li vynásobit ExampleTwo číslem ExampleOne, použijte následující kód:

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

Dělení čísel

Pokud chcete v Javě rozdělit dva objekty BigDecimal, použijte metodu divide(). Ta má stejnou syntaxi jako ostatní příklady a vypadá takto:

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

To však funguje pouze v případě, že výsledek je přesný nebo celočíselný. Pokud tomu tak není, zobrazí se následující chybová zpráva: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.. Jedná se o chybu běhu. Aby se tomu zabránilo, existují různé možnosti zaokrouhlování pro metodu divide(), které lze přenášet prostřednictvím java.math.RoundingMode. Můžete si vybrat z následujících konstant:

Konstantní Funkce
STROP Zaokrouhluje na kladnou nekonečnost
DOWN Zaokrouhluje na 0
FLOOR Zaokrouhluje na zápornou nekonečnost
HALF_DOWN Zaokrouhluje na nejbližší sousední číslo a opačné číslo než 0, pokud jsou obě čísla stejně vzdálená
HALF_EVEN Zaokrouhluje na nejbližší sousední číslo a na nejbližší sudé číslo, pokud jsou obě čísla stejně vzdálená
HALF_UP Zaokrouhluje na nejbližší sousední číslo a ve směru 0, pokud jsou obě čísla ve stejné vzdálenosti.
UNNECESSARY Vynechá zaokrouhlování a provede pouze přesné operace; lze použít pouze v případě, že dělení je přesné
UP Zaokrouhluje od 0

Přehled nejdůležitějších metod

Nyní, když jste se naučili, jak používat BigDecimal v Javě, zde je přehled některých z nejdůležitějších metod, které s ním můžete použít.

Metoda Funkce
abs() Vrací číslo typu BigDecimal s jeho absolutní hodnotou.
add() Vrací hodnotu BigDecimal, jejíž hodnota se skládá z (this + Addend)
divide() Výstupní hodnota je výsledkem (this / Divisor)
max(BigDecimal val) Vrátí maximum hodnoty BigDecimal
min(BigDecimal val) Vypíše minimum BigDecimal
movePointLeft(int n) Vypíše hodnotu BigDecimal, u které byla desetinná čárka posunuta o hodnotu „n“ doleva
movePointRight(int n) Vypíše BigDecimal, kde desetinná čárka byla posunuta doprava o hodnotu „n“
multiply(BigDecimal multiplicand, MathContext mc) Vrací hodnotu, která je výsledkem (this * multiplicand).
Přejít do hlavního menu