Как хранить и работать с деньгами в коде и базе данных?
Вот международный стандарт по денежным единицам en.wikipedia.org/wiki/ISO_4217 
Там видно, что число знаков после запятой у них может быть разное. А значит для простоты разработки, все стоит хранить в минимальной дробной денежной единице валюты, осущеставляя конвертацию при выводе (т.е. в int)
В некоторых случая сумму можно хранить в float, например когда это промежуточные результаты. А непосредственно записи с денежными суммами нужно в целочисленном формате, так как в бухучете нет дробных копеек, только целые. Ну и при выполнении операций округление нужно делать осторожно.