# Java BigDecimalin käyttö liukulukuisten lukujen näyttämiseen

Java-luokka BigDecimal mahdollistaa monimutkaisten liukulukuisten lukujen tarkan käsittelyn. Kun ne on luotu, voit soveltaa niihin erilaisia menetelmiä. Syntaksin rakenne on aina sama, joten luokkaan on helppo tutustua nopeasti.

## Mikä on Java BigDecimal?

Java BigDecimalin avulla voit näyttää ja käsitellä tarkasti **monimutkaisia liukulukuja, joiden koko voi teoriassa olla mikä tahansa**. Tässä artikkelissa esitellään erilaisia tapoja käyttää tätä luokkaa, olipa kyse sitten pyöristämisestä, aritmeettisista laskuista tai muotojen muuntamisesta. Opit myös, miten sitä voidaan käyttää hajauttamiseen ja tarkkoihin, monimutkaisiin vertailuihin.

Java BigDecimal koostuu **32-bittisestä kokonaislukuskaalasta** ja **skaalaamattomasta kokonaislukuarvosta**, jonka tarkkuus on valinnainen. Tässä tapauksessa “skaala” tarkoittaa desimaalipisteen jälkeisten numeroiden lukumäärää, edellyttäen että ne ovat suurempia tai yhtä suuria kuin nolla. Jos arvo on kuitenkin pienempi kuin nolla, se kerrotaan 10^(-skaala) -arvolla. Luokan kokoa rajoittaa vain tietokoneen muisti. Tämä on kuitenkin enemmän teoreettinen huomio, koska on epätodennäköistä, että ohjelma luo luvun, joka ylittää sen käytettävissä olevan muistin. Java-kielessä BigDecimal on tarkoitettu yksinomaan liukulukuille, kun taas BigInteger-luokkaa käytetään kokonaislukujen käsittelyyn.

## Mihin luokkaa tarvitaan?

Java BigDecimalin tarkkuustasoa ei tarvita kaikissa tilanteissa. On kuitenkin tilanteita, joissa sen tarkkuus on korvaamatonta. Se palvelee esimerkiksi hyvin verkkokaupan transaktioissa, joissa pienimmätkin desimaalit voivat vaikuttaa laskelmiin. Luokkaa käytetään myös tarkkojen staattisten analyysien suorittamiseen. **Lentokoneiden ja rakettien ohjaukseen ja navigointiin** käytettävät ohjelmat luottavat luokkaan, samoin kuin **lääketieteen ala**. Muilla aloilla Java BigDecimalin tarjoama tarkkuusluokka tarjoaa parhaan mahdollisen turvallisuuden.

## Miten objekti luodaan?

Jotta voit käyttää BigDecimal-luokkaa Java-kielessä, sinun on ensin tuotava **luokka Java-ohjelmaasi**. Kun olet tehnyt tämän, voit määritellä **tämän luokan objektin**. Seuraavaksi luo haluttu arvo argumenttina ja välitä se sopivaan Java-konstruktoriin. Kun olet suorittanut tämän prosessin, voit käyttää BigDecimalsia Java-kielessä. Luokasta löydät erilaisia menetelmiä, joita selitämme tarkemmin seuraavassa osassa. Ensin tuomme luokan ja julistamme kaksi BigDecimal-objektia:

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

Nyt voit käyttää näitä objekteja BigDecimal-luokan menetelmien kanssa.

## Esimerkkejä Java BigDecimalista

Kun olet luonut objektit, voit käyttää erilaisia menetelmiä objektien käyttämiseen ja toimintojen suorittamiseen. Katsotaanpa muutamia esimerkkejä, jotka osoittavat, miten tämä toimii. Tuloste käynnistetään Java-komennolla `System.out.println()`.

### Kahden BigDecimal-tyyppisen arvon lisääminen

Jos haluat lisätä kaksi BigDecimal-arvoa Java-kielessä, sinun on käytettävä `add()`. Tätä varten tallenna kaksi arvoa, joiden summan haluat laskea. Esimerkissämme arvo `ExampleOne` lisätään arvoon `ExampleTwo`.

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

### Vähennä numeroita

Kahden arvon vähentämiseksi toisistaan tarvitaan menetelmä `subtract()`. Seuraavassa esimerkissä vähennämme `ExampleTwo` `ExampleOne`.

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

### Kerro arvot

Java-kielessä kahden BigDecimal-tyyppisen luvun kertomiseen käytetty menetelmä toimii samalla tavalla. Se on nimeltään `multiply()`. Jos haluat kertoa `ExampleTwo` ja `ExampleOne`, käytä seuraavaa koodia:

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

### Lukujen jakaminen

Jos haluat jakaa kaksi BigDecimal-objektia Java-kielessä, käytä `divide()` menetelmää. Se noudattaa samaa syntaksia kuin muut esimerkit ja näyttää tältä:

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

Tämä toimii kuitenkin vain, jos tulos on **tarkka tai kokonaisluku**. Jos näin ei ole, seuraava virheilmoitus tulostetaan: `java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.`. Tämä kuvaa ajonaikaista virhettä. Tämän välttämiseksi divide()-metodille on olemassa erilaisia pyöristysvaihtoehtoja, jotka voidaan välittää **java.math.RoundingMode-muuttujan** kautta. Voit valita seuraavista vakioista:

<table>
  <thead>
    <tr>
      <th><strong>Vakio</strong></th>
      <th><strong>Funktio</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>CEILING</td>
      <td>Pyöristää positiiviseen äärettömään</td>
    </tr>
    <tr>
      <td>DOWN</td>
      <td>Pyöristää arvoon 0</td>
    </tr>
    <tr>
      <td>FLOOR</td>
      <td>Pyöristää negatiiviseen äärettömään</td>
    </tr>
    <tr>
      <td>HALF\_DOWN</td>
      <td>Pyöristää lähimpään naapurilukuun ja 0:n vastakohtaan, jos molemmat ovat yhtä kaukana</td>
    </tr>
    <tr>
      <td>HALF\_EVEN</td>
      <td>Pyöristää seuraavaan lähimpään lukuun ja seuraavaan parilliseen lukuun, jos molemmat ovat yhtä kaukana</td>
    </tr>
    <tr>
      <td>HALF\_UP</td>
      <td>Pyöristää lähimpään naapurilukuun ja suuntaan 0, edellyttäen että ne ovat molemmat yhtä kaukana</td>
    </tr>
    <tr>
      <td>UNNECESSARY</td>
      <td>Ohittaa pyöristämisen ja suorittaa vain tarkkoja laskutoimituksia; voidaan käyttää vain, jos jakolasku on tarkka</td>
    </tr>
    <tr>
      <td>UP</td>
      <td>Pyöristää pois 0:sta</td>
    </tr>
  </tbody>
</table>

## Tärkeimpien menetelmien yleiskatsaus

Nyt kun olet oppinut käyttämään BigDecimal-luokkaa Java-kielessä, tässä on yleiskatsaus tärkeimmistä menetelmistä, joita voit käyttää sen kanssa.

<table>
  <thead>
    <tr>
      <th><strong>Menetelmä</strong></th>
      <th><strong>Funktio</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>abs()</td>
      <td>Palauttaa BigDecimal-arvon, jonka absoluuttinen arvo on</td>
    </tr>
    <tr>
      <td>add()</td>
      <td>Palauttaa BigDecimal-arvon, jonka arvo koostuu (tämä + lisättävä)</td>
    </tr>
    <tr>
      <td>divide()</td>
      <td>Tulostusarvo on (tämä / jakaja)</td>
    </tr>
    <tr>
      <td>max(BigDecimal val)</td>
      <td>Tulostaa BigDecimal-arvon suurimman arvon</td>
    </tr>
    <tr>
      <td>min(BigDecimal val)</td>
      <td>Tulostaa BigDecimal-tyypin pienimmän arvon</td>
    </tr>
    <tr>
      <td>movePointLeft(int n)</td>
      <td>Tulostaa BigDecimal-arvon, jossa desimaalipiste on siirretty vasemmalle arvolla ‘n’</td>
    </tr>
    <tr>
      <td>movePointRight(int n)</td>
      <td>Tulostaa BigDecimal-arvon, jossa desimaalipiste on siirretty oikealle arvolla ‘n’.</td>
    </tr>
    <tr>
      <td>multiply(BigDecimal multiplicand, MathContext mc)</td>
      <td>Palauttaa arvon, joka on tulos (this \* multiplicand).</td>
    </tr>
  </tbody>
</table>

Vinkki Digitaalisesta oppaastamme saat lisätietoja Java-kielestä. Voit lukea Java-operaattoreista, [Java- ja JavaScript-kielien](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/java-vs-javascript/) eroista tai vertailla [Java- ja Python-kieliä](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-vs-java/).


This is a markdown version of: [https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/java-luokka-bigdecimal/](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/java-luokka-bigdecimal/) for AI/LLM consumption.