Sådan bruges Java BigDecimal til at vise tal med flydende komma
Java-klassen BigDecimal gør det muligt at behandle komplekse flydende tal med præcision. Når de er oprettet, kan du anvende forskellige metoder på dem. Syntaksens struktur er altid den samme, så det er nemt at blive fortrolig med klassen.
Hvad er Java BigDecimal?
Java BigDecimal giver dig mulighed for nøjagtigt at vise og behandle komplekse flydende tal af teoretisk enhver størrelse. Denne artikel viser dig forskellige metoder til at bruge denne klasse, hvad enten det er til afrunding, aritmetik eller formatkonvertering. Du lærer også, hvordan du implementerer den til hashing og til præcise, sofistikerede sammenligninger.
Java BigDecimal består af en 32-bit heltalsskala og en uskaleret heltalværdi med valgfri præcision. I dette tilfælde betyder ‘skala’ antallet af cifre efter decimaltegnet, forudsat at de er større end eller lig med nul. Hvis værdien er mindre end nul, multipliceres den imidlertid med 10^(-skala). Størrelsen af klassen er kun begrænset af computerens hukommelse. Dette er dog mere en teoretisk overvejelse, da det er usandsynligt, at et program vil oprette et tal, der overstiger den tilgængelige hukommelse. BigDecimal i Java er udelukkende beregnet til flydende tal, mens BigInteger-klassen bruges til behandling af heltal.
Hvad skal klassen bruges til?
Java BigDecimals præcisionsniveau er ikke nødvendigt i alle situationer. Men der er situationer, hvor dens præcision er uvurderlig. For eksempel fungerer den godt i e-handelstransaktioner, hvor selv den mindste decimal kan have indflydelse på beregningerne. Klassen bruges også til at udføre præcise statiske analyser. Programmer, der bruges til styring og navigation af fly eller raketter, er afhængige af klassen, ligesom det medicinske segment. På andre områder giver Java BigDecimals præcisionsniveau den bedst mulige sikkerhed.
Hvordan oprettes et objekt?
For at bruge BigDecimal 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-konstruktør. Når du har gennemført denne proces, kan du bruge BigDecimals i Java. Inden for klassen finder du forskellige metoder, som vi vil forklare mere detaljeret i det følgende afsnit. Først skal vi importere klassen og deklarere to BigDecimal-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");
}
}javaNu kan du bruge disse objekter med metoderne for BigDecimal-klassen.
Eksempler på Java BigDecimal
Når du har oprettet objekterne, kan du bruge forskellige metoder til at anvende objekterne og udføre operationer. Lad os se på et par eksempler for at vise, hvordan dette fungerer. Outputtet initieres ved hjælp af Java-kommandoen System.out.println().
Tilføjelse af to BigDecimals
Hvis du vil lægge to BigDecimals 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);javaTræ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);javaMultiplicer værdier
Den metode, du bruger til at multiplicere to BigDecimals i Java, fungerer på samme måde. Den hedder multiply(). For at multiplicere ExampleTwo med ExampleOne skal du bruge følgende kode:
ExampleOne =
ExampleOne.multiply(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaDeling af tal
Hvis du vil dividere to BigDecimal-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);javaDette fungerer dog kun, hvis resultatet er eksakt eller et heltal. Hvis dette ikke er tilfældet, vises følgende fejlmeddelelse: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.. Dette beskriver en runtime-fejl. For at undgå dette findes der forskellige afrundingsmuligheder for metoden divide(), som kan overføres via java.math.RoundingMode. Du kan vælge mellem følgende konstanter:
| Konstant | funktion |
|---|---|
| LOFT | Afrunder til positiv uendelighed |
| DOWN | Afrunder til 0 |
| FLOOR | Afrundes til negativ uendelighed |
| HALF_DOWN | Afrunder til det nærmeste tilstødende 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 tilstødende tal og i retning af 0, forudsat at de begge er lige langt væk |
| UNNECESSARY | Udelader afrunding og udfører kun eksakte operationer; kan kun bruges, hvis divisionen er eksakt |
| UP | Afrunder væk fra 0 |
Oversigt over de vigtigste metoder
Nu hvor du har lært at bruge BigDecimal i Java, får du her en oversigt over nogle af de vigtigste metoder, du kan bruge med det.
| Metode | Funktion |
|---|---|
| abs() | Returnerer en BigDecimal med dens absolutte værdi |
| add() | Returnerer en BigDecimal, hvis værdi består af (dette + addend) |
| divide() | Outputværdien er resultatet af (this / Divisor) |
| max(BigDecimal val) | Udgiver det maksimale af BigDecimal |
| min(BigDecimal val) | Udgiver det mindste af BigDecimal |
| movePointLeft(int n) | Udgiver en BigDecimal, hvor decimaltegnet er flyttet til venstre med værdien ‘n’ |
| movePointRight(int n) | Udskriver en BigDecimal, hvor decimaltegnet er flyttet til højre med værdien ‘n’ |
| multiply(BigDecimal multiplicand, MathContext mc) | Returnerer en værdi, der er resultatet af (this * multiplicand) |
7a13b71b544a0a47b82b89c94cb2cba2
b2638da2b23de584ee2ab9a57e89e105