How to Represent Money in Software