Dlaczego tak
Typy float i double zapisują liczby w systemie dwójkowym, w którym ułamki takie jak 0,1 czy 0,99 nie mają dokładnej reprezentacji, więc przy wielu dodawaniach kwot pojawiają się błędy w groszach. Klasa BigDecimal przechowuje liczbę dziesiętnie z określoną skalą i daje dokładne wyniki, dlatego stosuje się ją w obliczeniach finansowych. Typ int z ceną w złotych traci grosze, choć int lub long w groszach byłby poprawną alternatywą.