You might like the Numbers library, which allows you to work with any numeric types, as well as automatically converting integer and float arguments to the Decimal type when the other argument is one, which removes the Decimal.new(x) clutter:
alias Numbers, as: N
distance = N.div(price, order_price)
multiplier = 0.2
sale = N.add(price, N.mult(price, multiplier))
Numbers on purpose does not export overloaded operators (but might do so in an explicit opt-in way in the near future).
EDIT: The new version 5.1.0 Has support for exporting overloaded operators as well.


















