Sobes.tech
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