# Kuidas kasutada Java BigDecimalit ujukomaarvude kuvamiseks

Java-klass BigDecimal võimaldab täpselt töödelda keerukaid ujukomaarvud. Kui need on loodud, saate neile rakendada erinevaid meetodeid. Süntaksi struktuur on alati sama, seega on klassiga lihtne kiiresti tutvuda.

## Mis on Java BigDecimal?

Java BigDecimal võimaldab teil täpselt kuvada ja töödelda **keerukaid ujukomaarvud, mis on teoreetiliselt mis tahes suurusega**. Käesolevas artiklis tutvustatakse erinevaid meetodeid selle klassi kasutamiseks, olgu see siis ümardamine, aritmeetika või formaadi teisendamine. Samuti õpite, kuidas seda rakendada hash-funktsioonide ja täpsete, keerukate võrdluste jaoks.

Java BigDecimal koosneb **32-bitisest täisarvust** ja **skaalimata täisarvust,** millel on valikuline täpsus. Sel juhul tähendab „skaala” koma järel olevate numbrite arvu, tingimusel et need on suuremad või võrdsed nulliga. Kui väärtus on väiksem kui null, korrutatakse see 10^(-skaala)ga. Klassi suurus on piiratud ainult arvuti mäluga. Kuigi see on pigem teoreetiline kaalutlus, kuna on ebatõenäoline, et programm loob numbri, mis ületab selle kättesaadava mälu. Java BigDecimal on mõeldud ainult ujukomaarvude jaoks, samas kui BigInteger klassi kasutatakse täisarvude töötlemiseks.

## Milleks on see klass vajalik?

Java BigDecimal’i täpsust ei ole vaja igas olukorras. Kuid on olukordi, kus selle täpsus on hindamatu. Näiteks täidab see hästi oma ülesannet e-kaubanduse tehingutes, kus arvutustele võib mõju avaldada isegi väikseim kümnendkoht. Klassit kasutatakse ka täpsete staatiliste analüüside tegemiseks. **Lennukite ja raketite juhtimiseks ja navigeerimiseks** kasutatavad programmid tuginevad sellele klassile, samuti **meditsiinisektor**. Teistes valdkondades pakub Java BigDecimal parimat võimalikku turvalisust.

## Kuidas luuakse objekt?

BigDecimal’i kasutamiseks Java’s peate esmalt importima **klassi oma Java-programmi**. Kui olete seda teinud, saate deklareerida **selle klassi objekti**. Seejärel looge soovitud väärtus argumendina ja edastage see sobivale Java konstruktorile. Kui olete selle protsessi lõpetanud, saate BigDecimals’i Java-s kasutada. Klassis leiate mitmesuguseid meetodeid, mida selgitame järgmises jaotises üksikasjalikumalt. Esmalt impordime klassi ja deklareerime kaks BigDecimal-objekti:

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

Nüüd saate neid objekte kasutada BigDecimal-klassi meetoditega.

## Näited Java BigDecimal kohta

Kui olete objektid loonud, saate neid kasutada ja nendega toiminguid teha erinevate meetodite abil. Vaadakem mõningaid näiteid, et näha, kuidas see toimib. Väljund algatatakse Java-käsu `System.out.println()` abil.

### Kahe BigDecimali liitmine

Kui soovite Java-s liita kahte BigDecimals-i, peate kasutama `add()`. Selleks salvestage kaks väärtust, mille summa soovite arvutada. Meie näites liidetakse väärtus `ExampleOne` väärtusega `ExampleTwo`.

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

### Arvude lahutamine

Kahe väärtuse lahutamiseks üksteisest on vaja `subtract()` meetodit. Järgmises näites lahutame `ExampleOne` `ExampleTwo`.

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

### Väärtuste korrutamine

Java-s kahe BigDecimal-tüüpi arvu korrutamiseks kasutatav meetod toimib sarnaselt. Seda nimetatakse `multiply()`. `ExampleTwo` ja `ExampleOne` korrutamiseks kasutage järgmist koodi:

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

### Arvude jagamine

Kui soovite Java-s jagada kahte BigDecimal-objekti, kasutage meetodit `divide()`. See järgib sama süntaksit kui teised näited ja näeb välja järgmine:

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

See toimib aga ainult juhul, kui tulemus on **täpne või täisarv**. Kui see nii ei ole, kuvatakse järgmine veateade: `java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.`. See kirjeldab käitamisaja viga. Selle vältimiseks on meetodil divide() mitmesugused ümardamisvõimalused, mida saab edastada **java.math.RoundingMode** kaudu. Valida saab järgmiste konstantide hulgast:

<table>
  <thead>
    <tr>
      <th><strong>Konstant</strong></th>
      <th><strong>Funktsioon</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>LAE</td>
      <td>Ümardab positiivseks lõpmatuseks</td>
    </tr>
    <tr>
      <td>DOWN</td>
      <td>Ümardab 0-ni</td>
    </tr>
    <tr>
      <td>FLOOR</td>
      <td>Ümardab negatiivseks lõpmatuseks</td>
    </tr>
    <tr>
      <td>POOL\_ALL</td>
      <td>Ümardab lähima naaberarvuni ja 0 vastandiks, kui mõlemad on võrdsel kaugusel</td>
    </tr>
    <tr>
      <td>POOL\_PAAR</td>
      <td>Ümardab järgmise naaberarvuni ja järgmise paarisarvuni, kui mõlemad on võrdsel kaugusel</td>
    </tr>
    <tr>
      <td>HALF\_UP</td>
      <td>Ümardab lähima naaberarvuni ja suunas 0, tingimusel et mõlemad on võrdsel kaugusel</td>
    </tr>
    <tr>
      <td>UNNECESSARY</td>
      <td>Jätab ümardamise vahele ja teostab ainult täpseid operatsioone; saab kasutada ainult juhul, kui jagamine on täpne</td>
    </tr>
    <tr>
      <td>UP</td>
      <td>Ümardab 0-st eemale</td>
    </tr>
  </tbody>
</table>

## Ülevaade olulisematest meetoditest

Nüüd, kui olete õppinud, kuidas kasutada BigDecimali Java-s, on siin ülevaade mõnedest olulisematest meetoditest, mida sellega kasutada saab.

<table>
  <thead>
    <tr>
      <th><strong>Meetod</strong></th>
      <th><strong>Funktsioon</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>abs()</td>
      <td>Tagastab BigDecimal absoluutväärtusega</td>
    </tr>
    <tr>
      <td>add()</td>
      <td>Tagastab BigDecimal, mille väärtus koosneb (this + Addend)</td>
    </tr>
    <tr>
      <td>divide()</td>
      <td>Väljundväärtus tuleneb (this / jagaja)</td>
    </tr>
    <tr>
      <td>max(BigDecimal val)</td>
      <td>Väljastab BigDecimal’i maksimumväärtuse</td>
    </tr>
    <tr>
      <td>min(BigDecimal val)</td>
      <td>Väljastab BigDecimal väärtuse miinimumi</td>
    </tr>
    <tr>
      <td>movePointLeft(int n)</td>
      <td>Väljastab BigDecimal, kus koma on nihutatud vasakule väärtuse ‘n’ võrra</td>
    </tr>
    <tr>
      <td>movePointRight(int n)</td>
      <td>Väljastab BigDecimal, kus koma on nihutatud paremale väärtuse „n” võrra</td>
    </tr>
    <tr>
      <td>multiply(BigDecimal multiplicand, MathContext mc)</td>
      <td>Tagastab väärtuse, mis on saadud (this \* multiplicand)</td>
    </tr>
  </tbody>
</table>

Tip Meie digitaalsest juhendist saate rohkem teada Java kohta. Saate lugeda Java operaatoritest, [Java ja JavaScripti](https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/java-vs-javascript/) erinevustest või võrrelda [Java ja Pythonit](https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/python-vs-java/).


This is a markdown version of: [https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/java-klass-bigdecimal/](https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/java-klass-bigdecimal/) for AI/LLM consumption.