An alternative to using BigDecimal is to use int or long, depending on the amounts involved, and to keep track of the decimal point yourself. In this example, the obvious approach is to do all computation in cents instead of dollars.
This is a good recommendation, but when you're working with money there's a decent chance you'll need to do division or fractional multiplication (e.g., to calculate tax), which means you're right back athaving to worry about rounding/precision, and mixing and matching (going back and forth between int/long and float/BigDecimal).