What do you think of this? https://github.com/eriksencosta/money/blob/enum-percentage-s...
It is a (quick) spike solution, but I've implemented the currency codes as enums and added support for 20.percent.
Not so sure about supporting 50.btc and 25.3.usd. I need to check if doing so would affect code completion.