Binary numbers cannot exactly represent decimals.

Use BigDecimal for currency calculations.

...using the constructor that takes a String as a parameter.