Which data type to use for manipulating currency

currency, java

Solution

You almost certainly don't want to use floating-point types (`double`, `float`, `Double`, `Float`) to handle monetary amounts, especially if you will be performing computations on them. The main reason for this is that there are many simple-looking numbers that cannot be represented exactly as a `double` et al. One such number is `0.1`.

`BigDecimal` is therefore a much better choice for this use case.

Problem

I am trying to decide which data type shall i use for a financial application. I have read that `Double` or `BigDecimal` should be used. And i am confused between them. Any help in this regard will be highly appreciated

Original source

Related problems