Junior — Middle
Čime se klase BigDecimal i Double razlikuju u Javi i u kojim slučajevima je preporučljivo koristiti svaku od njih?
sobes.tech АИ
Одговор од АИ
Klasa Double u Javi predstavlja primitivni tip sa dvostrukom preciznošću pokretnog zareza (64 bita). Pogodna je za brze aritmetičke operacije sa brojevima sa pokretnim zarezom, ali zbog osobina binarne reprezentacije, ne uvek tačno čuva decimalne brojeve, što može dovesti do grešaka zaokruživanja.
BigDecimal je klasa za rad sa decimalnim brojevima sa arbitrarnom preciznošću. Čuva brojeve u obliku niza ili niza cifara, čime izbegava greške zaokruživanja i obezbeđuje tačnost u finansijskim i drugim kritičnim računanjima.
Kada koristiti:
- Koristite Double kada je brzina važna i prihvatljive su manje greške (npr. u naučnim proračunima, grafici).
- Koristite BigDecimal za finansijske proračune gde je preciznost i ispravno zaokruživanje ključno (npr. pri radu sa novcem).
Primer sa BigDecimal:
import java.math.BigDecimal;
BigDecimal cena = new BigDecimal("19.99");
BigDecimal količina = new BigDecimal("3");
BigDecimal ukupno = cena.multiply(količina);
System.out.println("Ukupno: " + ukupno); // Ukupno: 59.97
Primer sa Double:
double cena = 19.99;
double količina = 3;
double ukupno = cena * količina;
System.out.println("Ukupno: " + ukupno); // Može biti 59.96999999999999