Treat ints and floats differently

Lets it keep to the correct math when dealing with floats, and treats ints as just (int f => f/100)
yeah, you could always return a numeric, and leave it to the consumer to wrap it in Percent.new(result) if they want to keep it a percent