Java-klassen Big­De­ci­mal gör det möjligt att bearbeta komplexa flyttal med precision. När de har skapats kan du tillämpa olika metoder på dem. Syntaxens struktur är alltid densamma, så det är lätt att snabbt bekanta sig med klassen.

Vad är Java Big­De­ci­mal?

Java Big­De­ci­mal gör det möjligt att exakt visa och bearbeta komplexa flyt­tals­num­mer av te­o­re­tiskt sett valfri storlek. Den här artikeln visar olika metoder för att använda den här klassen, vare sig det gäller av­rund­ning, aritmetik eller for­mat­kon­ver­te­ring. Du lär dig också hur du im­ple­men­te­rar den för hashning och för precisa, so­fisti­ke­ra­de jäm­fö­rel­ser.

Java Big­De­ci­mal består av en 32-bitars hel­tals­ska­la och ett oscalerat heltal med valfri precision. I detta fall betyder “skala” antalet siffror efter de­ci­mal­teck­net, förutsatt att de är större än eller lika med noll. Om värdet är mindre än noll mul­ti­pli­ce­ras det dock med 10^(-skala). Klassens storlek begränsas endast av datorns minne. Detta är dock mer en teoretisk över­väg­ning, eftersom det är osan­no­likt att ett program skapar ett tal som över­skri­der det till­gäng­li­ga minnet. Big­De­ci­mal i Java är avsett ute­slu­tan­de för flyttal, medan klassen Bi­gIn­te­ger används för be­ar­bet­ning av heltal.

Vad behövs klassen till?

Java Big­De­ci­mals precision behövs inte i alla si­tu­a­tio­ner. Men det finns si­tu­a­tio­ner där dess precision är ovär­der­lig. Den fyller till exempel sin funktion väl i e-han­dels­trans­ak­tio­ner, där även den minsta decimal kan påverka be­räk­ning­ar­na. Klassen används också för att utföra precisa statiska analyser. Program som används för styrning och na­vi­ge­ring av flygplan eller raketer är beroende av klassen, liksom den me­di­cins­ka sektorn. Inom andra områden ger den precision som Java Big­De­ci­mal erbjuder bästa möjliga säkerhet.

Hur skapas ett objekt?

För att använda Big­De­ci­mal i Java måste du först importera klassen till ditt Java-program. När du har gjort det kan du deklarera ett objekt av denna klass. Sedan skapar du önskat värde som ett argument och skickar detta till lämplig Java-kon­struk­tör. När du har slutfört denna process kan du använda Big­De­ci­mals i Java. Inom klassen hittar du olika metoder, som vi kommer att förklara mer de­tal­je­rat i följande avsnitt. Först ska vi importera klassen och deklarera två Big­De­ci­mal-objekt:

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

Nu kan du använda dessa objekt med metoderna för klassen Big­De­ci­mal.

Exempel för Java Big­De­ci­mal

När du har skapat objekten kan du använda olika metoder för att använda objekten och utföra ope­ra­tio­ner. Låt oss titta på några exempel för att visa hur detta fungerar. Utdata initieras med Java-kommandot System.out.println().

Lägga till två Big­De­ci­mals

Om du vill lägga till två Big­De­ci­mals i Java måste du använda metoden add(). För att göra detta lagrar du de två värden som du vill beräkna summan för. I vårt exempel kommer värdet ExampleOne att läggas till värdet ExampleTwo.

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

Sub­tra­he­ra tal

För att sub­tra­he­ra två värden från varandra behöver du metoden subtract(). I nästa exempel sub­tra­he­rar vi ExampleTwo från ExampleOne.

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

Mul­ti­pli­ce­ra värden

Metoden du använder för att mul­ti­pli­ce­ra två Big­De­ci­mals i Java fungerar på liknande sätt. Den kallas multiply(). För att mul­ti­pli­ce­ra ExampleTwo med ExampleOne använder du följande kod:

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

Dela tal

Om du vill dela två Big­De­ci­mal-objekt i Java använder du metoden divide(). Den följer samma syntax som de andra exemplen och ser ut så här:

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

Detta fungerar dock endast om re­sul­ta­tet är exakt eller ett heltal. Om så inte är fallet visas följande fel­med­de­lan­de: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.. Detta beskriver ett runtime-fel. För att undvika detta finns det olika av­rund­nings­al­ter­na­tiv för metoden divide(), som kan överföras via java.math.Rounding­Mo­de. Du kan välja mellan följande kon­stan­ter:

Konstant Funktion
TAK Avrundar till positiv oänd­lig­het
DOWN Avrundar till 0
FLOOR Avrundar till negativ oänd­lig­het
HALV_NED Avrundar till närmaste an­grän­san­de tal och motsatsen till 0 om båda är lika långt bort
HALV_JÄMN Avrundar till närmaste grann­num­mer och till närmaste jämna tal om båda är lika långt bort
HALF_UP Avrundar till närmaste an­grän­san­de tal och i riktning mot 0, förutsatt att båda ligger på samma avstånd
UN­NE­CES­SA­RY Utelämnar av­rund­ning och utför endast exakta ope­ra­tio­ner; kan endast användas om di­vi­sio­nen är exakt
UP Avrundar bort från 0

Översikt över de vik­ti­gas­te metoderna

Nu när du har lärt dig hur man använder Big­De­ci­mal i Java, följer här en översikt över några av de vik­ti­gas­te metoderna du kan använda med det.

Metod Funktion
abs() Re­tur­ne­rar ett Big­De­ci­mal-värde med dess absoluta värde
add() Re­tur­ne­rar ett Big­De­ci­mal vars värde består av (detta + Addend)
divide() Ut­mat­nings­vär­det är re­sul­ta­tet av (detta / Divisor)
max(Big­De­ci­mal val) Visar det maximala värdet för Big­De­ci­mal
min(Big­De­ci­mal val) Skriver ut det minsta värdet av Big­De­ci­mal
move­Point­Left(int n) Visar ett Big­De­ci­mal där de­ci­mal­teck­net har flyttats åt vänster med värdet ‘n’
move­PointRight(int n) Skriver ut ett Big­De­ci­mal där de­ci­mal­teck­net har flyttats åt höger med värdet ‘n’
multiply(Big­De­ci­mal mul­ti­pli­cand, Mat­h­Con­text mc) Re­tur­ne­rar ett värde som är re­sul­ta­tet av (detta * mul­ti­pli­cand).
Gå till huvudmeny