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

Flash Discussion :

[FLASH MX] Problème de décimale avec euro


Sujet :

Flash

  1. #1
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 68
    Points : 44
    Points
    44
    Par défaut [FLASH MX] Problème de décimale avec euro
    Bonjour à tous,

    J'ai un problème avec des décimales pour l'euro dans le contexte d'un caddie.

    En fait j'ai des prix d'articles du type 7.00 ou 7.20 ou 7.29
    Pas de problème à ce niveau, j'ai les virgules et décimales correctes.

    Le problème arrive quand je fais une opération arithmétique soit le prix x la quantité.

    7.29 x 2 = 14.58
    7.20 x 2 = 14.4
    7.00 x 2 = 14

    Comment puis-je faire ou existe-t-il une fonction pour conserver la virgule avec 2 décimales soit avoir un format euro.

    Merci

  2. #2
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    tu veux que ca te donnes 14,00 ?

  3. #3
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 68
    Points : 44
    Points
    44
    Par défaut
    c'est ça,

    donc si chiffre = 14 , j'aimerais que ça donne 14,00
    si chiffre = 14.1, j'aimerais que ça donne 14,10
    et si chiffre = 14.25, pas besoin car il est déjà au format désiré.

    Je viens de faire ceci, ça marche, mais j'aimerais bien quelques chose de plus petit car je vais devoir mettre ça à plusieurs endroit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    mot = 4412.20
     
    prix = mot*2;
    prix=prix.toString();
     
    index = prix.IndexOf(".");
    premier = prix.length;
    second = prix.IndexOf(".")+1;
    resultat = premier - second;
     
     
    if (index=="-1"){
    	trace("pas de virgule donc")
    	prix=prix+".00";
    	}
     
    else if (resultat=="1"){
    	trace("il y a un chiffre derrière la virgule")
    	prix=prix+"0";
    	}
     
    else{
    	trace("Le nombre est correctement formaté")
    	prix=prix;
    	}
     
    trace("prix final = "+prix);
    Existe-t-il un procédé pour prendre mon code ci-dessus, le mettre dans une espèce de fonction et l'appelé de cette façon

    Merci

  4. #4
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Salut ,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function currencyToString(price:Number, separator:String, currency:String):String {
    	var sPrice:String = (Math.round(price*100)).toString();
    	return sPrice.substring(0, (sPrice.length -2)) + separator + sPrice.substring((sPrice.length -2), sPrice.length) + currency;
    }
     
    trace(currencyToString(12345,","," €"));
    trace(currencyToString(12345.6,","," €"));
    trace(currencyToString(12345.67,"."," €"));
    trace(currencyToString(12345.678,"."," €"));
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  5. #5
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 68
    Points : 44
    Points
    44
    Par défaut
    Salut,

    Merci pour ta réponse, mais je n'arrive pas à faire tourner ta fonction. flash me dit qu'il ne trouve pas la première accolade de fonction à cause du ":string". Si je retire le ":string", ça marche mais alors la fonction renvoi zéro.
    J'ai aussi essayé de mettre tout entre parenthèse, mais il me demande alors un nom de paramètre pour le ":string".
    A quoi sert les 2 points (":") en flash car je ne m'en sert jamais.

    PS: Je travaille avec flash MX 6.0

    Merci à toi,

  6. #6
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut

    J'avais pas vu le MX, c'était du MX2004. C'est bien la peine que je demande de mettre des tags si je ne les lis pas

    Sinon normalement il suffit d'enlever le typage fort (tous les :String ou :Number), cela devrait donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function currencyToString(price, separator, currency){
       var sPrice = (Math.round(price*100)).toString();
       return sPrice.substring(0, (sPrice.length -2)) + separator + sPrice.substring((sPrice.length-2), sPrice.length) + currency;
    }
    Après tu peux adapter comme tu veux, si tu es sûr de vouloir que le même séparateur de décimale, tu peux le mettre en dur et si tu te fout de la monnaie, ca peut donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function currencyToString(price){
       var sPrice = (Math.round(price*100)).toString();
       return sPrice.substring(0, (sPrice.length -2)) + "." + sPrice.substring((sPrice.length-2), sPrice.length);
    } 
    trace(currencyToString(12345.678));
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  7. #7
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 68
    Points : 44
    Points
    44
    Par défaut
    ok, merci pour ta réponse, j'ai pratiqué comme dans ton exemple.

    a+

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    une autre astuce hyper simple qui fonctionne impeccable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var tempPrix = new String (prix);
     
    	if (tempPrix.lastIndexOf(".") < 0) {
    		prix = prix + ".00"
    	}
    	if (tempPrix.indexOf(".") == tempPrix.length -2) {
    		prix = prix + "0";
    	}
    voilou ;-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/01/2007, 15h32
  2. [FLASH 8] problème de ciblage avec attach.
    Par aorgerit dans le forum Flash
    Réponses: 5
    Dernier message: 23/10/2006, 15h21
  3. [FLASH MX2004] Problème de décimales
    Par stip dans le forum Flash
    Réponses: 3
    Dernier message: 15/07/2005, 23h45
  4. [CR8] Problème de décimales avec Centura
    Par ccquick dans le forum SAP Crystal Reports
    Réponses: 13
    Dernier message: 05/10/2004, 10h46
  5. [FLASH MX2004] Problème de menu avec explorer
    Par lyne dans le forum Flash
    Réponses: 2
    Dernier message: 24/08/2004, 19h34

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