Wednesday, July 18, 2012

Conversion de devise

Dernièrement j'ai été surpris de voir comment certains programmeurs procédaient pour convertir une valeur monétaire d'une devise à une autre afin d'obtenir un tableau d'équivalence de devises.

Leur principe repose sur un nombre conséquent d'appel à une méthode d'un Web service quelconque ayant une signature de la forme suivante:

double GetCurrencyRate(fromCurrency, toCurrency)
Le Web service aurait pour fonction de retourner une valeur décimale représentant la conversion, comme pour reprendre l'exemple dans la capture d'écran ci-dessus:
GetCurrencyRate("EUR", "USD") = 1.2284


Inefficace vers efficace
Faire appel a une méthode distante à plusieurs reprises est loin d'être efficace et pourtant il existe un moyen simple, fiable et gratuit d'obtenir le résultat pour construire ce fameux tableau d'équivalence.

La réponse se trouve ici: http://openexchangerates.org/latest.json


Il s'agit d'un tableau complet d'échange ou la monnaie de base est le dollar américain (USD).  Le principe est simple, récupérer avec un seul appel distant ces données et utiliser les valeurs du tableau récupéré pour calculer la correspondance de n'importe quel devise.

Par exemple pour obtenir la valeur correspondante de EUR à MUR on fera:
MUR ÷ EUR = 31.038697  ÷ 0.817044 = 37.98901527947087
Exemple qui ne manque pas de nous rappeler à quel point l'Euro face à la roupie Mauricienne est faible ces derniers temps.