Junior — Middle
Aký je rozdiel medzi triedami BigDecimal a Double v Jave a v ktorých prípadoch je vhodnejšie použiť každú z nich?
sobes.tech AI
Odpoveď od AI
Trieda Double v Jave predstavuje primitívny typ s dvojitou presnosťou pohyblivej desatinnej čiarky (64 bity). Je vhodná na rýchle aritmetické operácie s číslami s pohyblivou desatinnou čiarkou, ale kvôli vlastnostiam binárneho zobrazenia ne vždy presne uchová desatinné čísla, čo môže viesť k zaokrúhľovacím chybám.
BigDecimal je trieda na prácu s desatinnými číslami s ľubovoľnou presnosťou. Ukladá čísla vo forme reťazca alebo poľa číslic, čím sa vyhýba chybám zaokrúhľovania a zabezpečuje presnosť pri finančných a iných kritických výpočtoch.
Kedy použiť:
- Použite Double, keď je rýchlosť dôležitá a malé chyby sú akceptovateľné (napríklad vo vedeckých výpočtoch, grafoch).
- Použite BigDecimal pre finančné výpočty, kde je dôležitá presnosť a správne zaokrúhľovanie (napríklad pri práci s peniazmi).
Príklad s BigDecimal:
import java.math.BigDecimal;
BigDecimal cena = new BigDecimal("19.99");
BigDecimal množstvo = new BigDecimal("3");
BigDecimal celkom = cena.multiply(množstvo);
System.out.println("Celkom: " + celkom); // Celkom: 59.97
Príklad s Double:
double cena = 19.99;
double množstvo = 3;
double celkom = cena * množstvo;
System.out.println("Celkom: " + celkom); // Môže byť 59.96999999999999