Money
Inherits JSON::Serializable / Comparable / Money::Exchange / Money::Formatting / Money::Allocate / Money::Arithmetic / Money::Casting / Struct / Value / Object
"Money is any object or record that is generally accepted as payment for goods and services and repayment of debts in a given socio-economic context or country." - Wikipedia
An instance of Money represents an amount of a specific currency.
Money is a value object and should be treated as immutable.
Constants
Constructors
Creates a new Money object of value given as an amount
of the given currency (as fractional if Int, or whole amount otherwise)
Money.new # => Money(@amount=0 @currency="USD")
Money.new(1_50) # => Money(@amount=1.5 @currency="USD")
Money.new(1.5, :usd) # => Money(@amount=1.5 @currency="USD")
Money.new(1.5.to_big_d, "USD") # => Money(@amount=1.5 @currency="USD")
Class methods
Each Money object is associated to a bank object, which is responsible
for currency exchange. This property allows you to specify the default
bank object. The default value for this property is an instance of
Bank::VariableExchange. It allows one to specify custom exchange rates.
Each Money object is associated to a bank object, which is responsible
for currency exchange. This property allows you to specify the default
bank object. The default value for this property is an instance of
Bank::VariableExchange. It allows one to specify custom exchange rates.
Sets the default currency for creating new Money object.
Sets the default currency for creating new Money object.
Sets the default bank to be a Bank::SingleCurrency bank that raises on
currency exchange. Useful when apps operate in a single currency at a time.
Sets the given rounding mode within the scope of the given block
Instance methods
Returns the numerical value of the money.
Money.new(1_00, "USD").amount # => 1.0
See #to_big_d and #fractional, also Money.rounding_mode.
The Bank object which currency exchanges are performed with.
NOTE: Setting nil (the default) will delegate to Money.default_bank.
The Bank object which currency exchanges are performed with.
NOTE: Setting nil (the default) will delegate to Money.default_bank.
The value of the monetary amount represented in the fractional or subunit of the currency.
For example, in the US dollar currency the fractional unit is cents, and
there are 100 cents in one US dollar. So given the Money representation of
one US dollar, the fractional interpretation is 100.
Another example is that of the Kuwaiti dinar. In this case the fractional
unit is the fils and there 1000 fils to one Kuwaiti dinar. So given the
Money representation of one Kuwaiti dinar, the fractional interpretation
is 1000.
FIXME: Doesn't work with Money.infinite_precision? yet
Returns the nearest possible amount in cash value (cents).
For example, in Swiss franc (CHF), the smallest possible amount of cash value is CHF 0.05. Therefore, for CHF 0.07 this method returns CHF 0.05, and for CHF 0.08, CHF 0.10.
See Currency#smallest_denomination, also Money.rounding_mode.