Start here. This is the direct spoken answer to practice first.
Overview
The useful answer is not simply to say that BigDecimal is precise; it must explain construction, scale, equality, and where business rounding belongs.
I use BigDecimal for monetary calculations because it represents decimal values directly instead of approximating them in binary like double. I construct amounts from a decimal string or BigDecimal.valueOf, and arithmetic returns new values because BigDecimal is immutable. Scale and rounding are part of the money contract: an amount may require two fraction digits, while tax or currency conversion may need a documented rounding rule. I would normally enforce those rules in a money value object rather than pass unrestricted BigDecimal values everywhere.