Java-klassen Big­De­ci­mal gør det muligt at behandle komplekse flydende tal med præcision. Når de er oprettet, kan du anvende for­skel­li­ge metoder på dem. Syn­tak­sens struktur er altid den samme, så det er nemt at blive fortrolig med klassen.

Hvad er Java Big­De­ci­mal?

Java Big­De­ci­mal giver dig mulighed for nøjagtigt at vise og behandle komplekse flydende tal af teoretisk enhver størrelse. Denne artikel viser dig for­skel­li­ge metoder til at bruge denne klasse, hvad enten det er til afrunding, aritmetik eller for­mat­kon­ver­te­ring. Du lærer også, hvordan du im­ple­men­te­rer den til hashing og til præcise, so­fi­sti­ke­re­de sam­men­lig­nin­ger.

Java Big­De­ci­mal består af en 32-bit hel­tals­ska­la og en uskaleret hel­tal­vær­di med valgfri præcision. I dette tilfælde betyder ‘skala’ antallet af cifre efter de­ci­mal­teg­net, forudsat at de er større end eller lig med nul. Hvis værdien er mindre end nul, mul­ti­pli­ce­res den imid­ler­tid med 10^(-skala). Stør­rel­sen af klassen er kun begrænset af com­pu­te­rens hukom­mel­se. Dette er dog mere en teoretisk over­vej­el­se, da det er us­and­syn­ligt, at et program vil oprette et tal, der over­sti­ger den til­gæn­ge­li­ge hukom­mel­se. Big­De­ci­mal i Java er ude­luk­ken­de beregnet til flydende tal, mens Bi­gIn­te­ger-klassen bruges til be­hand­ling af heltal.

Hvad skal klassen bruges til?

Java Big­De­ci­mals præ­ci­sions­ni­veau er ikke nød­ven­digt i alle si­tu­a­tio­ner. Men der er si­tu­a­tio­ner, hvor dens præcision er uvur­der­lig. For eksempel fungerer den godt i e-han­del­stransak­tio­ner, hvor selv den mindste decimal kan have ind­fly­del­se på be­reg­nin­ger­ne. Klassen bruges også til at udføre præcise statiske analyser. Pro­gram­mer, der bruges til styring og navi­ga­tion af fly eller raketter, er afhængige af klassen, ligesom det me­di­cin­ske segment. På andre områder giver Java Big­De­ci­mals præ­ci­sions­ni­veau den bedst mulige sikkerhed.

Hvordan oprettes et objekt?

For at bruge Big­De­ci­mal i Java skal du først importere klassen til dit Java-program. Når du har gjort det, kan du deklarere et objekt af denne klasse. Dernæst skal du oprette den ønskede værdi som et argument og overføre denne til den relevante Java-kon­struk­tør. Når du har gen­nem­ført denne proces, kan du bruge Big­De­ci­mals i Java. Inden for klassen finder du for­skel­li­ge metoder, som vi vil forklare mere de­tal­je­ret i det følgende afsnit. Først skal vi importere klassen og deklarere to Big­De­ci­mal-objekter:

/ / 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 bruge disse objekter med metoderne for Big­De­ci­mal-klassen.

Eksempler på Java Big­De­ci­mal

Når du har oprettet ob­jek­ter­ne, kan du bruge for­skel­li­ge metoder til at anvende ob­jek­ter­ne og udføre ope­ra­tio­ner. Lad os se på et par eksempler for at vise, hvordan dette fungerer. Outputtet initieres ved hjælp af Java-kom­man­do­en System.out.println().

Til­fø­jel­se af to Big­De­ci­mals

Hvis du vil lægge to Big­De­ci­mals sammen i Java, skal du bruge metoden add(). For at gøre dette skal du gemme de to værdier, som du vil beregne summen for. I vores eksempel vil værdien ExampleOne blive lagt til værdien ExampleTwo.

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

Træk tal fra hinanden

For at trække to værdier fra hinanden skal du bruge metoden subtract(). I det næste eksempel trækker vi ExampleTwo fra ExampleOne.

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

Mul­ti­pli­cer værdier

Den metode, du bruger til at mul­ti­pli­ce­re to Big­De­ci­mals i Java, fungerer på samme måde. Den hedder multiply(). For at mul­ti­pli­ce­re ExampleTwo med ExampleOne skal du bruge følgende kode:

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

Deling af tal

Hvis du vil dividere to Big­De­ci­mal-objekter i Java, skal du bruge metoden divide(). Den følger samme syntaks som de andre eksempler og ser således ud:

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

Dette fungerer dog kun, hvis re­sul­ta­tet er eksakt eller et heltal. Hvis dette ikke er tilfældet, vises følgende fejl­med­del­el­se: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.. Dette beskriver en runtime-fejl. For at undgå dette findes der for­skel­li­ge af­run­dings­mu­lig­he­der for metoden divide(), som kan overføres via java.math.Ro­un­ding­Mo­de. Du kan vælge mellem følgende kon­stan­ter:

Konstant funktion
LOFT Afrunder til positiv uen­de­lig­hed
DOWN Afrunder til 0
FLOOR Afrundes til negativ uen­de­lig­hed
HALF_DOWN Afrunder til det nærmeste til­stø­de­n­de tal og det modsatte af 0, hvis begge er lige langt væk
HALF_EVEN Afrunder til det næste nærmeste tal og til det næste lige tal, hvis begge er lige langt væk
HALF_UP Afrunder til det nærmeste til­stø­de­n­de tal og i retning af 0, forudsat at de begge er lige langt væk
UN­NE­CES­SARY Udelader afrunding og udfører kun eksakte ope­ra­tio­ner; kan kun bruges, hvis di­vi­sio­nen er eksakt
UP Afrunder væk fra 0

Oversigt over de vigtigste metoder

Nu hvor du har lært at bruge Big­De­ci­mal i Java, får du her en oversigt over nogle af de vigtigste metoder, du kan bruge med det.

Metode Funktion
abs() Re­tur­ne­rer en Big­De­ci­mal med dens absolutte værdi
add() Re­tur­ne­rer en Big­De­ci­mal, hvis værdi består af (dette + addend)
divide() Out­put­vær­di­en er re­sul­ta­tet af (this / Divisor)
max(Big­De­ci­mal val) Udgiver det maksimale af Big­De­ci­mal
min(Big­De­ci­mal val) Udgiver det mindste af Big­De­ci­mal
movePo­int­L­eft(int n) Udgiver en Big­De­ci­mal, hvor de­ci­mal­teg­net er flyttet til venstre med værdien ‘n’
movePo­in­tRight(int n) Udskriver en Big­De­ci­mal, hvor de­ci­mal­teg­net er flyttet til højre med værdien ‘n’
multiply(Big­De­ci­mal mul­ti­pli­cand, Mat­hCon­te­xt mc) Re­tur­ne­rer en værdi, der er re­sul­ta­tet af (this * mul­ti­pli­cand)

7a13b71b544a0a47b82b89c94cb2cba2

b2638da2b23de584ee2ab9a57e89e105

Gå til ho­ved­me­nu­en