Representing Money
The first decision in any financial system, and the one people get wrong most often: never store money in a floating-point number.
Never store money in a float. Use integer minor units or fixed-scale decimals, round half-even, allocate so splits sum exactly, and treat currency and the FX rate you used as first-class, auditable data.