IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Convertion de devise rapide & léger


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 55
    Points
    55
    Par défaut Convertion de devise rapide & léger
    Bonjour, je suis en train de faire un convertisseur de devise en Javascript, et je me demande quel algorithme je vais utiliser.

    La solution la plus simple consiste à avoir un tableau de 3 colonnes (SOURCE:CIBLE:taux) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    USD/EUR : 0.75
    EUR/USD : 1.5
    EUR/CNY : 10
    CNY/USD : 20
    Comme ça il me suffit de lire la ligne avec la SOURCE et la CIBLE qui m'intéresse pour récupérer le taux.

    Selon Wikipédia il existe plus de 200 devises.

    On le voit tout de suite, je vais rapidement me retrouver avec un tableau énorme (n*(n-1) soit environ 40000 lignes si je sais compter).

    Donc je cherche un algorithme plus intelligent, j'attends vos suggestions.

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Points : 1 037
    Points
    1 037
    Par défaut
    Pour les devises les plus courante : EUR, USD, GBP, CHF , JPY tu gardes ton mécanisme. Pour le reste, il te faut utiliser une devise pivot genre EUR ou le USD et avoir tous les cours sur cette devise, donc environ 200 cours.
    Ensuite pour ta conversion tu passes par cette devise pivot pour retrouver le cours dans la devise cible.

    Sachant que sauf si tu es dans un pays exotique, 95% de tes cas seront couvert par les premiers cours.


    Bon courage,

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    Merci pour ta réponse.

    La devise pivot, c'est ce que je pensais faire. Dans ce cas, pourquoi ne pas utiliser une devise pivot pour tout, avoir 2 mécanisme ça rend les choses moins claires.

    Maintenant mon problème c'est de maintenir mes taux à jour, je vais faire ça avec une tâche cron et un script PHP.

    La seule API complète et fiable que j'ai trouvé est celle de Yahoo.
    Ex: http://download.finance.yahoo.com/d/...=EURUSD=X&f=l1

    Le problème c'est que j'ai pas trouvé comment avoir un tableau (genre EUR vers une vingtaines de devises), pour le moment faut que je fasse une requête à chaque fois que je veux mettre à jour un taux EUR/xxx.

    Il n'y a que la BCE qui propose ce genre de service : http://www.ecb.int/stats/exchange/eu.../index.en.html

    Mais il n'y a que 30 devises, il manque le Franc Suisse et le shekel Israëlien par exemple, pas cool.
    Surtout que ce sont des pays proches de l'Europe (voir pommé en plein milieu), et que les utilisateurs auront besoin du support de ces devises.

    Sinon j'ai aussi trouvé un flux sur BANK of CANADA.

    Bref c'est un peu la mission pour trouver THE source de données pour tenir les taux à jour.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Points : 1 037
    Points
    1 037
    Par défaut
    Avoir une table directe est une optimisation pour les devises les plus courante. Pas de calcul = plus rapide.

    Pour ce qui est de ta source de données, ce genre de chose se paie très cher pour avoir quelques choses d'exhaustif. Il va falloir te contenter des sources de 2eme mains gratuites sur le net.

    Bon courage,

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Vu que tu es en Javascript, pourquoi ne passes-tu donc pas par des requêtes Ajax afin d'interroger un serveur sur le taux de change, et ceci quelle que soit la devise choisie ? La plupart des sites bancaires te permettront d'avoir un accès de ce type, quitte à simuler les paramètres d'une soumission de formulaire...

    Ainsi, tu n'as qu'à intégrer la liste des devises supportées (tableau somme toute "léger"), et lorsque l'utilisateur demande une conversion, tu vas chopper le taux de change par AJAX. Tu mets le taux en cache dans un tableau associatif, tu te fiches de la taille maximale qu'il peut avoir : il ne l'atteindra que si l'utilisateur demande des conversions de toutes les devises vers toutes les autres devises !

    Si l'utilisateur re-demande une conversion, pas besoin de requête, tu as le taux en mémoire. S'il change de devises, requêtes + cache de nouveau.

    Tu n'as plus qu'à prévoir, pour chaque taux, une date d'expiration du taux mis en cache (une heure ? 12 heures ? 24 heures ?) de façon à ne pas risquer une conversion pourrie si l'utilisateur ne ferme pas l'application.

Discussions similaires

  1. AEOS | CMS Rapide, simple et léger
    Par OverSu dans le forum Mon programme
    Réponses: 5
    Dernier message: 15/09/2011, 01h08
  2. [CONSEIL] SE léger et rapide pour un PC obsolète
    Par stanley dans le forum Distributions
    Réponses: 5
    Dernier message: 24/02/2010, 11h55
  3. Graphiques rapide et léger
    Par RaelRiaK dans le forum VB.NET
    Réponses: 2
    Dernier message: 18/12/2008, 16h04
  4. [Compilateur] Un compilateur C ultra léger et ultra rapide : TCC
    Par Hibou57 dans le forum Choisir un environnement de développement
    Réponses: 4
    Dernier message: 08/10/2007, 22h43
  5. LES TECHNIQUES DES SGBDR / MySQL rapide ???
    Par SQLpro dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/09/2003, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo