A Java BigDecimal osztály lehetővé teszi a komplex lebegőpontos számok pontos feldolgozását. Miután létrehoztuk őket, különböző módszereket alkalmazhatunk rájuk. A szintaxis felépítése mindig ugyanaz, így könnyű gyorsan megismerkedni az osztállyal.

Mi az a Java BigDecimal?

A Java BigDecimal lehetővé teszi komplex lebegőpontos számok pontos megjelenítését és feldolgozását , elméletileg bármilyen méretben. Ez a cikk bemutatja a osztály használatának különböző módszereit, legyen szó kerekítésről, aritmetikáról vagy formátumkonverzióról. Megtanulhatja továbbá, hogyan lehet implementálni hash-elésre és pontos, kifinomult összehasonlításokra.

A Java BigDecimal egy 32 bites egész szám skálából és egy opcionális pontosságú, nem skálázott egész számértékből áll. Ebben az esetben a „skála” a tizedesvessző utáni számjegyek számát jelenti, feltéve, hogy azok nagyobbak vagy egyenlőek nullával. Ha azonban az érték kisebb nullánál, akkor azt megszorozzák 10^(-skála) értékkel. Az osztály méretét csak a számítógép memóriája korlátozza. Ez azonban inkább elméleti megfontolás, mivel nem valószínű, hogy egy program olyan számot hozna létre, amely meghaladja a rendelkezésre álló memóriát. A Java BigDecimal kizárólag lebegőpontos számokhoz készült, míg a BigInteger osztály egész számok feldolgozására szolgál.

Mire van szükség az osztályra?

A Java BigDecimal pontossága nem minden esetben szükséges. Vannak azonban olyan helyzetek, amikor pontossága felbecsülhetetlen. Például jól szolgálja a célját az e-kereskedelmi tranzakciókban, ahol a számításokat még a legkisebb tizedesjegy is befolyásolhatja. Az osztályt precíz statikus elemzések elvégzésére is használják. A repülőgépek vagy rakéták vezérlésére és navigációjára használt programok, valamint az orvosi szegmens is támaszkodik az osztályra. Más területeken a Java BigDecimal által biztosított pontosságszint a lehető legjobb biztonságot nyújtja.

Hogyan jön létre egy objektum?

Ahhoz, hogy a BigDecimal-t Java-ban használhassa, először importálnia kell az osztályt a Java programjába. Miután ezt megtette, deklarálhat egy objektumot ebből az osztályból. Ezután hozza létre a kívánt értéket argumentumként, és adja át a megfelelő Java konstruktornak. Miután befejezte ezt a folyamatot, használhatja a BigDecimals-t Java-ban. Az osztályon belül különböző módszereket talál, amelyeket a következő szakaszban részletesebben ismertetünk. Először importáljuk az osztályt, és deklarálunk két BigDecimal objektumot:

/ / 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

Mostantól ezeket az objektumokat a BigDecimal osztály módszereivel használhatja.

Példák Java BigDecimal-ra

Miután létrehozta az objektumokat, különböző módszerekkel használhatja azokat és végezhet műveleteket. Nézzünk meg néhány példát, hogy megmutassuk, hogyan működik ez. A kimenet a Java System.out.println() parancs segítségével indítható el.

Két BigDecimal hozzáadása

Ha két BigDecimal értéket szeretne összeadni Java-ban, akkor a add() metódust kell használnia. Ehhez tárolja el a két értéket, amelyek összegét ki szeretné számítani. Példánkban a ExampleOne értéket adjuk hozzá a ExampleTwo értékhez.

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

Számok kivonása

Két érték egymástól való kivonásához a subtract() módszerre van szükség. A következő példában ExampleTwo vonunk ki ExampleOne.

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

Értékek szorzása

A Java nyelvben két BigDecimal típusú szám szorzásához használt módszer hasonlóan működik. A neve multiply(). ExampleTwo és ExampleOne szorzásához használja a következő kódot:

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

Számok osztása

Ha két BigDecimal objektumot szeretne osztani Java-ban, használja a divide() metódust. Ez ugyanazt a szintaxist követi, mint a többi példa, és így néz ki:

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

Ez azonban csak akkor működik, ha az eredmény pontos vagy egész szám. Ha ez nem így van, a következő hibaüzenet jelenik meg: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.. Ez egy futási hibát jelöl. Ennek elkerülése érdekében a divide() metódushoz különböző kerekítési opciók állnak rendelkezésre, amelyek a java.math.RoundingMode segítségével adhatók át. A következő konstansok közül választhat:

Állandó Funkció
FELSŐ HATÁR Pozitív végtelenre kerekít
DOWN 0-ra kerekít
FLOOR Negatív végtelenre kerekít
FÉL_LE A legközelebbi szomszédos számra kerekít, és 0 ellentétére, ha mindkettő egyenlő távolságra van
FÉL_PÁROS A következő szomszédos számra kerekít, és a következő páros számra, ha mindkettő egyenlő távolságra van
HALF_UP A legközelebbi szomszédos számra kerekít, és 0 irányába, feltéve, hogy mindkettő azonos távolságra van
UNNECESSARY Elhagyja a kerekítést, és csak pontos műveleteket hajt végre; csak akkor használható, ha az osztás pontos
UP 0-tól távolodva kerekít

A legfontosabb módszerek áttekintése

Most, hogy megtanultad, hogyan kell használni a BigDecimal-t Java-ban, íme egy áttekintés a legfontosabb módszerekről, amelyeket ezzel használhatsz.

Módszer Funkció
abs() Visszaad egy BigDecimal értéket annak abszolút értékével.
add() Visszaad egy BigDecimal értéket, amelynek értéke (ez + hozzáadandó) összetételű.
divide() Kimeneti érték eredménye (ez / osztó)
max(BigDecimal val) A BigDecimal legnagyobb értékét adja vissza.
min(BigDecimal val) A BigDecimal legkisebb értékének kimenete
movePointLeft(int n) Kiadja a BigDecimal értéket, amelyben a tizedesvesszőt „n” értékkel balra tolta el
movePointRight(int n) Kiadja a BigDecimal értéket, amelyben a tizedesvessző az „n” értékkel jobbra került
multiply(BigDecimal multiplicand, MathContext mc) Visszaad egy értéket, amely (ez * szorzó) eredménye.
Ugrás a főmenübe