De Java-klasse BigDecimal maakt het mogelijk om complexe drijvende-kommagetallen nauwkeurig te verwerken. Nadat ze zijn aangemaakt, kun je er verschillende methoden op toepassen. De structuur van de syntaxis is altijd hetzelfde, dus je raakt snel vertrouwd met de klasse.

Wat is Java BigDecimal?

Met Java BigDecimal kunt u complexe drijvende-kommagetallen van in theorie elke grootte nauwkeurig weergeven en verwerken. In dit artikel worden verschillende methoden voor het gebruik van deze klasse beschreven, of het nu gaat om afronding, rekenkundige bewerkingen of formaatconversie. U leert ook hoe u deze klasse kunt implementeren voor hashing en voor nauwkeurige, geavanceerde vergelijkingen.

Java BigDecimal bestaat uit een 32-bits geheel getalschaal en een niet-geschaalde geheel getalwaarde met optionele precisie. In dit geval betekent ‘schaal’ het aantal cijfers achter de komma, op voorwaarde dat deze groter zijn dan of gelijk zijn aan nul. Als de waarde echter kleiner is dan nul, wordt deze vermenigvuldigd met 10^(-schaal). De grootte van de klasse wordt alleen beperkt door het geheugen van de computer. Dit is echter meer een theoretische overweging, aangezien het onwaarschijnlijk is dat een programma een getal zal creëren dat het beschikbare geheugen overschrijdt. BigDecimal in Java is uitsluitend bedoeld voor drijvende-kommagetallen, terwijl de klasse BigInteger wordt gebruikt voor het verwerken van gehele getallen.

Waarvoor is de les nodig?

Het precisieniveau van Java BigDecimal is niet voor elk scenario nodig. Maar er zijn situaties waarin de precisie van onschatbare waarde is. Het is bijvoorbeeld zeer geschikt voor e-commercetransacties, waar zelfs de kleinste decimale plaats van invloed kan zijn op berekeningen. De klasse wordt ook gebruikt voor het uitvoeren van nauwkeurige statische analyses. Programma’s die worden gebruikt voor de besturing en navigatie van vliegtuigen of raketten zijn afhankelijk van de klasse, net als de medische sector. Op andere gebieden biedt de nauwkeurigheid van Java BigDecimal de best mogelijke veiligheid.

Hoe wordt een object gemaakt?

Om BigDecimal in Java te gebruiken, moet u eerst de klasse in uw Java-programma importeren. Zodra u dat hebt gedaan, kunt u een object van deze klasse declareren. Maak vervolgens de gewenste waarde als argument aan en geef deze door aan de juiste Java-constructor. Zodra u dit proces hebt voltooid, kunt u BigDecimals in Java gebruiken. Binnen de klasse vindt u verschillende methoden, die we in het volgende gedeelte nader zullen toelichten. Eerst gaan we de klasse importeren en twee BigDecimal-objecten declareren:

/ / 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 kunt u deze objecten gebruiken met de methoden voor de klasse BigDecimal.

Voorbeelden voor Java BigDecimal

Zodra u de objecten hebt gemaakt, kunt u verschillende methoden gebruiken om de objecten te gebruiken en bewerkingen uit te voeren. Laten we een paar voorbeelden bekijken om te laten zien hoe dit werkt. De uitvoer wordt gestart met behulp van het Java-commando System.out.println().

Twee BigDecimals toevoegen

Als u twee BigDecimals in Java wilt optellen, moet u de methode add() gebruiken. Sla hiervoor de twee waarden op waarvan u de som wilt berekenen. In ons voorbeeld wordt de waarde ExampleOne opgeteld bij de waarde ExampleTwo.

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

Getallen aftrekken

Om twee waarden van elkaar af te trekken, heb je de subtract() nodig. In het volgende voorbeeld trekken we ExampleTwo af van ExampleOne.

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

Waarden vermenigvuldigen

De methode die je gebruikt om twee BigDecimals in Java te vermenigvuldigen, werkt op dezelfde manier. Deze heet multiply(). Om ExampleTwo met ExampleOne te vermenigvuldigen, gebruik je de volgende code:

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

Getallen delen

Als u twee BigDecimal-objecten in Java wilt delen, gebruikt u de methode divide(). Deze volgt dezelfde syntaxis als de andere voorbeelden en ziet er als volgt uit:

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

Dit werkt echter alleen als het resultaat exact of een geheel getal is. Als dit niet het geval is, wordt de volgende foutmelding weergegeven: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.. Dit beschrijft een runtime-fout. Om dit te voorkomen, zijn er verschillende afrondingsopties voor de methode divide(), die kunnen worden doorgegeven via java.math.RoundingMode. U kunt kiezen uit de volgende constanten:

Constant Functie
CEILING Rondt af naar positief oneindig
DOWN Rondt af naar 0
FLOOR Rondt af naar negatief oneindig
HALF_DOWN Rondt af naar het dichtstbijzijnde naburige getal en het tegenovergestelde van 0 als beide even ver verwijderd zijn
HALF_EVEN Rondt af naar het dichtstbijzijnde naburige getal en naar het dichtstbijzijnde even getal als beide even ver verwijderd zijn
HALF_UP Rondt af naar het dichtstbijzijnde naburige getal en in de richting van 0, op voorwaarde dat beide even ver verwijderd zijn
UNNECESSARY Slaat afronding over en voert alleen exacte bewerkingen uit; kan alleen worden gebruikt als de deling exact is
UP Rondt af van 0

Overzicht van de belangrijkste methoden

Nu je hebt geleerd hoe je BigDecimal in Java kunt gebruiken, volgt hier een overzicht van enkele van de belangrijkste methoden die je ermee kunt gebruiken.

Methode Functie
abs() Geeft een BigDecimal met de absolute waarde terug
add() Geeft een BigDecimal terug waarvan de waarde bestaat uit (dit + optelling)
divide() Geeft de waarde van (dit / deler) weer
max(BigDecimal val) Geeft het maximum van de BigDecimal weer
min(BigDecimal val) Geeft het minimum van de BigDecimal weer
movePointLeft(int n) Geeft een BigDecimal weer waarbij de decimale punt naar links is verschoven met de waarde ‘n’
movePointRight(int n) Geeft een BigDecimal weer waarbij de decimale punt naar rechts is verplaatst met de waarde ‘n’
multiply(BigDecimal multiplicand, MathContext mc) Geeft een waarde terug die het resultaat is van (dit * multiplicand).
Ga naar hoofdmenu