The Money class is immutable, so each operation returns a new Money instance.
Whilst money does support a number of arithmetic operations that take a double as the operator this is STRONGLY DISCOURAGE. Doubles are imprecise and will introduce rounding errors.
Where ever possible used the methods that take a Fixed, Int or BigInt.
The '*' operator takes a num and converts it to a Fixed value with 16 decimal places. However the scale of the result is dictated by the Money instance passed to the '*' operator.
/// Create the KR currency with 0 decimal digits.final kr =Currency.create('KR',0);/// parse '100' to get a Money storing KR100.final amount =Money.parseWithCurrency('100', kr, pattern:'S0');/// Multiply by 0.4 to get KR40final halfish = amount *0.4;expect(halfish,equals(Money.fromIntWithCurrency(40, kr)));/// scale of the results is 0 as dictated by the Currency.expect(halfish.decimalDigits,equals(0));
Money provides the following arithmetic operators:
unary -()
+(Money)
-(Money)
*(num)
/(num)
Operators + and - must be used with operands in same currency, otherwise ArgumentError will be thrown.
Operators *, / receive a num as the second operand. Both operators use schoolbook rounding to round result up to a minorUnits of a currency.