Use BigDecimal as opposed to floats

Converted Item.cost and cart.total to use BigDecimal as opposed to floats. 

A simple example of how floats will fail: Add an item with a unit cost of $2.30. When you call cart.total you will get 2.29.