Sobes.tech
Junior — Middle

Kuidas erinevad Java klassid BigDecimal ja Double ning millistel juhtudel on eelistatav kasutada kumbki neist?

sobes.tech AI

Vastus AI-lt

Java Double klass esindab kahemõõtmelise (64-bitine) ujukomaarvu primitiivset tüüpi. See sobib kiireks arvutamiseks ujukomaarvudega, kuid binaarset esitamistunnustest tulenevalt ei pruugi see alati täpselt salvestada kümnendväärtusi, mis võib viia ümardamisvigadeni.

BigDecimal on klass, mis võimaldab töötada mis tahes täpsusega kümnendväärtustega. Ta salvestab arvud stringina või numbrijadana, vältides ümardamisvigu ja tagades täpsuse finants- ja muudes kriitilistes arvutustes.

Millal kasutada:

  • Kasutage Double, kui kiirus on oluline ja väikesed vead on vastuvõetavad (näiteks teaduslikes arvutustes, graafikutes).
  • Kasutage BigDecimal finantsarvutustes, kus täpsus ja õige ümardamine on kriitilised (näiteks raha töötlemisel).

Näide BigDecimal'iga:

import java.math.BigDecimal;

BigDecimal hind = new BigDecimal("19.99");
BigDecimal kogus = new BigDecimal("3");
BigDecimal kokku = hind.multiply(kogus);
System.out.println("Kokku: " + kokku); // Kokku: 59.97

Näide Double'iga:

double hind = 19.99;
double kogus = 3;
double kokku = hind * kogus;
System.out.println("Kokku: " + kokku); // Võib olla 59.96999999999999