Junior — Middle
V čem se liší třídy BigDecimal a Double v Javě a v jakých případech je vhodnější je použít?
sobes.tech AI
Odpověď od AI
Třída Double v jazyce Java představuje primitivní typ s dvojitou přesností pohyblivé desetinné čárky (64 bitů). Je vhodná pro rychlé aritmetické operace s čísly s pohyblivou desetinnou čárkou, ale kvůli vlastnostem binárního zobrazení ne vždy přesně ukládá desetinná čísla, což může vést k zaokrouhlovacím chybám.
BigDecimal je třída pro práci s desetinnými čísly s libovolnou přesností. Ukládá čísla ve formě řetězce nebo pole číslic, čímž se vyhýbá chybám zaokrouhlování a zajišťuje přesnost při finančních a dalších kritických výpočtech.
Kdy používat:
- Použijte Double, když je důležitá rychlost a malé chyby jsou přijatelné (například ve vědeckých výpočtech, grafice).
- Použijte BigDecimal pro finanční výpočty, kde je důležitá přesnost a správné zaokrouhlování (například při práci s penězi).
Příklad s BigDecimal:
import java.math.BigDecimal;
BigDecimal cena = new BigDecimal("19.99");
BigDecimal množství = new BigDecimal("3");
BigDecimal celkem = cena.multiply(množství);
System.out.println("Celkem: " + celkem); // Celkem: 59.97
Příklad s Double:
double cena = 19.99;
double množství = 3;
double celkem = cena * množství;
System.out.println("Celkem: " + celkem); // Může být 59.96999999999999