Hur man använder Java BigDecimal för att visa flyttal
Java-klassen BigDecimal 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 BigDecimal?
Java BigDecimal gör det möjligt att exakt visa och bearbeta komplexa flyttalsnummer av teoretiskt sett valfri storlek. Den här artikeln visar olika metoder för att använda den här klassen, vare sig det gäller avrundning, aritmetik eller formatkonvertering. Du lär dig också hur du implementerar den för hashning och för precisa, sofistikerade jämförelser.
Java BigDecimal består av en 32-bitars heltalsskala och ett oscalerat heltal med valfri precision. I detta fall betyder “skala” antalet siffror efter decimaltecknet, förutsatt att de är större än eller lika med noll. Om värdet är mindre än noll multipliceras det dock med 10^(-skala). Klassens storlek begränsas endast av datorns minne. Detta är dock mer en teoretisk övervägning, eftersom det är osannolikt att ett program skapar ett tal som överskrider det tillgängliga minnet. BigDecimal i Java är avsett uteslutande för flyttal, medan klassen BigInteger används för bearbetning av heltal.
Vad behövs klassen till?
Java BigDecimals precision behövs inte i alla situationer. Men det finns situationer där dess precision är ovärderlig. Den fyller till exempel sin funktion väl i e-handelstransaktioner, där även den minsta decimal kan påverka beräkningarna. Klassen används också för att utföra precisa statiska analyser. Program som används för styrning och navigering av flygplan eller raketer är beroende av klassen, liksom den medicinska sektorn. Inom andra områden ger den precision som Java BigDecimal erbjuder bästa möjliga säkerhet.
Hur skapas ett objekt?
För att använda BigDecimal 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-konstruktör. När du har slutfört denna process kan du använda BigDecimals i Java. Inom klassen hittar du olika metoder, som vi kommer att förklara mer detaljerat i följande avsnitt. Först ska vi importera klassen och deklarera två BigDecimal-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");
}
}javaNu kan du använda dessa objekt med metoderna för klassen BigDecimal.
Exempel för Java BigDecimal
När du har skapat objekten kan du använda olika metoder för att använda objekten och utföra operationer. 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å BigDecimals
Om du vill lägga till två BigDecimals 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);javaSubtrahera tal
För att subtrahera två värden från varandra behöver du metoden subtract(). I nästa exempel subtraherar vi ExampleTwo från ExampleOne.
ExampleOne =
ExampleOne.subtract(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaMultiplicera värden
Metoden du använder för att multiplicera två BigDecimals i Java fungerar på liknande sätt. Den kallas multiply(). För att multiplicera ExampleTwo med ExampleOne använder du följande kod:
ExampleOne =
ExampleOne.multiply(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaDela tal
Om du vill dela två BigDecimal-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);javaDetta fungerar dock endast om resultatet är exakt eller ett heltal. Om så inte är fallet visas följande felmeddelande: 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 avrundningsalternativ för metoden divide(), som kan överföras via java.math.RoundingMode. Du kan välja mellan följande konstanter:
| Konstant | Funktion |
|---|---|
| TAK | Avrundar till positiv oändlighet |
| DOWN | Avrundar till 0 |
| FLOOR | Avrundar till negativ oändlighet |
| HALV_NED | Avrundar till närmaste angränsande tal och motsatsen till 0 om båda är lika långt bort |
| HALV_JÄMN | Avrundar till närmaste grannnummer och till närmaste jämna tal om båda är lika långt bort |
| HALF_UP | Avrundar till närmaste angränsande tal och i riktning mot 0, förutsatt att båda ligger på samma avstånd |
| UNNECESSARY | Utelämnar avrundning och utför endast exakta operationer; kan endast användas om divisionen är exakt |
| UP | Avrundar bort från 0 |
Översikt över de viktigaste metoderna
Nu när du har lärt dig hur man använder BigDecimal i Java, följer här en översikt över några av de viktigaste metoderna du kan använda med det.
| Metod | Funktion |
|---|---|
| abs() | Returnerar ett BigDecimal-värde med dess absoluta värde |
| add() | Returnerar ett BigDecimal vars värde består av (detta + Addend) |
| divide() | Utmatningsvärdet är resultatet av (detta / Divisor) |
| max(BigDecimal val) | Visar det maximala värdet för BigDecimal |
| min(BigDecimal val) | Skriver ut det minsta värdet av BigDecimal |
| movePointLeft(int n) | Visar ett BigDecimal där decimaltecknet har flyttats åt vänster med värdet ‘n’ |
| movePointRight(int n) | Skriver ut ett BigDecimal där decimaltecknet har flyttats åt höger med värdet ‘n’ |
| multiply(BigDecimal multiplicand, MathContext mc) | Returnerar ett värde som är resultatet av (detta * multiplicand). |

