money2
  • Overview
  • Common Currencies
  • Creating a Currency
  • Registering a Currency
  • Parsing
  • Find a currency
  • Default format
  • Symbols
  • Separators
    • Decimal Separator
    • Group Separator
  • Creating Money
    • Money.parse
    • Currency.parse
    • Money.from
    • Currencies.parse
    • decimalDigits
  • Formatting
    • Formatting Patterns
  • Storing and Send
  • Exchange Rates
  • Comparison
  • Currency Predicates
  • Value Sign Predicates
  • Arithmetic Operations
  • Allocation
  • Money encoding/decoding
Powered by GitBook
On this page

Was this helpful?

Exchange Rates

When manipulating monetary amounts you often need to convert between currencies.

Money2 provide a simple method to convert a Money instance to another currency using an exchange rate.

To converts a Money instance into a target Currency use the Money.exchangeTo method and an ExchangeRate.

To do this you need to define an exchange rate which consists of a rate, a from currency and a to currency.

Example

Lets say you have an invoice in Australian Dollars (AUD) which you need to convert to US Dollars (USD).

Start by googling the exchange rate for AUD to USD. You are likely to find something similar to:

1 AUD = 0.68c USD

Which means that for each Australian Dollar you will receive 0.68 US cents. (AKA I'm not traveling to the USA this year).

To do the above conversion:

import 'package:money2/money2.dart';
import 'package:test/test.dart';

void main() {
  test('exchange rate', () {
      /// Create the AUD invoice amount ($10.00)
      final invoiceAmount = Money.fromInt(1000, isoCode: 'AUD');
      expect(invoiceAmount.format('SCCC 0.00'), equals(r'$AUD 10.00'));

      /// Define the exchange rate in USD (0.68c)
      final auToUsExchangeRate = ExchangeRate.fromFixed(
          Fixed.parse('0.75432', scale: 5),
          fromIsoCode: 'AUD',
          toIsoCode: 'USD',
          toDecimalDigits: 5);
      expect(auToUsExchangeRate.format('0.00000'), equals('0.75432'));

      /// Now do the conversion.
      final usdAmount = invoiceAmount.exchangeTo(auToUsExchangeRate);
      expect(usdAmount.format('SCCC 0.00'), equals(r'$USD 7.54'));
    });
}
PreviousStoring and SendNextComparison

Last updated 29 days ago

Was this helpful?