# Hoe Java BigDecimal te gebruiken om drijvende-kommagetallen weer te geven

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:

```java
/ / 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");
	}
}
```

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`.

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

### 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`.

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

### 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:

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

### 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:

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

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:

<table>
  <thead>
    <tr>
      <th><strong>Constant</strong></th>
      <th><strong>Functie</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>CEILING</td>
      <td>Rondt af naar positief oneindig</td>
    </tr>
    <tr>
      <td>DOWN</td>
      <td>Rondt af naar 0</td>
    </tr>
    <tr>
      <td>FLOOR</td>
      <td>Rondt af naar negatief oneindig</td>
    </tr>
    <tr>
      <td>HALF\_DOWN</td>
      <td>Rondt af naar het dichtstbijzijnde naburige getal en het tegenovergestelde van 0 als beide even ver verwijderd zijn</td>
    </tr>
    <tr>
      <td>HALF\_EVEN</td>
      <td>Rondt af naar het dichtstbijzijnde naburige getal en naar het dichtstbijzijnde even getal als beide even ver verwijderd zijn</td>
    </tr>
    <tr>
      <td>HALF\_UP</td>
      <td>Rondt af naar het dichtstbijzijnde naburige getal en in de richting van 0, op voorwaarde dat beide even ver verwijderd zijn</td>
    </tr>
    <tr>
      <td>UNNECESSARY</td>
      <td>Slaat afronding over en voert alleen exacte bewerkingen uit; kan alleen worden gebruikt als de deling exact is</td>
    </tr>
    <tr>
      <td>UP</td>
      <td>Rondt af van 0</td>
    </tr>
  </tbody>
</table>

## 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.

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

Tip In onze digitale gids kunt u meer te weten komen over Java. U kunt lezen over Java-operatoren, de verschillen tussen [Java en JavaScript](https://www.ionos.com/nl-be/digitalguide/websites/webontwikkeling/java-versus-javascript/) of ontdekken hoe [Java en Python](https://www.ionos.com/nl-be/digitalguide/websites/webontwikkeling/python-versus-java/) zich tot elkaar verhouden.


This is a markdown version of: [https://www.ionos.com/nl-be/digitalguide/websites/webontwikkeling/java-klasse-bigdecimal/](https://www.ionos.com/nl-be/digitalguide/websites/webontwikkeling/java-klasse-bigdecimal/) for AI/LLM consumption.