BigDecimal is an exact way of representing numbers. A
Double has a certain precision. Working with doubles of various magnitudes (say
d2=0.001) could result in the
0.001 being dropped alltogether when summing as the difference in magnitude is so large. With
BigDecimal this would not happen.
The disadvantage of
BigDecimal is that it’s slower, and it’s a bit more difficult to program algorithms that way (due to
/ not being overloaded).
If you are dealing with money, or precision is a must, use
Doubles tend to be good enough.
I do recommend reading the javadoc of
BigDecimal as they do explain things better than I do here 🙂