I work in this area. BigDecimal is obviously perfect in terms of accuracy, but it sucks in terms of performance. Doubling is an option in some circumstances (especially when dealing with normal stock prices, doubling easily — with appropriate precautions — can represent the entire price range of all stock exchanges that I regularly deal with).
Another option is if you know the DP range used by the exchanges in question, use a fixed point and normal int or long. To take an example, I know well that Xetra (German electronic exchange) currently has no more than 3 decimal places. Using 3dp, you can represent prices up to 2,147,483.647 with the usual int. Perfectly at an individual price, it is not profitable to represent general daily trading.
, , .