Junior — Middle
Wat is het verschil tussen de klassen BigDecimal en Double in Java en in welke gevallen is het beter om elk van hen te gebruiken?
sobes.tech AI
Antwoord van AI
De klasse Double in Java vertegenwoordigt een primitief type met dubbele precisie floating-point (64 bits). Het is handig voor snelle wiskundige bewerkingen met drijvende-komma getallen, maar vanwege de kenmerken van de binaire representatie slaat het niet altijd decimale getallen precies op, wat kan leiden tot afrondingsfouten.
BigDecimal is een klasse voor het werken met decimale getallen van arbitraire precisie. Het slaat de getallen op als een string of een array van cijfers, waardoor afrondingsfouten worden voorkomen en precisie wordt gegarandeerd bij financiële en andere kritieke berekeningen.
Wanneer gebruiken:
- Gebruik Double wanneer snelheid belangrijk is en kleine fouten acceptabel zijn (bijvoorbeeld in wetenschappelijke berekeningen, grafieken).
- Gebruik BigDecimal voor financiële berekeningen waar precisie en correcte afronding essentieel zijn (bijvoorbeeld bij het werken met geld).
Voorbeeld met BigDecimal:
import java.math.BigDecimal;
BigDecimal prijs = new BigDecimal("19.99");
BigDecimal hoeveelheid = new BigDecimal("3");
BigDecimal totaal = prijs.multiply(hoeveelheid);
System.out.println("Totaal: " + totaal); // Totaal: 59.97
Voorbeeld met Double:
double prijs = 19.99;
double hoeveelheid = 3;
double totaal = prijs * hoeveelheid;
System.out.println("Totaal: " + totaal); // Kan 59.96999999999999 zijn