• Billet écrit dans : Flex Flash Floush 10.01.2009

    Pour mon application AIR (cf le post juste en dessous) j’ai eu besoin d’arrondir mes statistiques à l’entier supérieur/inférieur et les mettre en forme pour ne garder que deux décimal après la virgule. N’étant pas du tout expert en Flash/Flex, j’ai commencé à faire un code de bourrin comme splitter mon float selon la virgule, slicer ensuite pour ne garder que deux décimal etc … Bref, un truc vraiment crade pour me dépanner vite fait.

    Je suis revenu quelque jours après sur ce bout de code pour le cleaner un peu et pour trouver une solution vraiment propre et voici ma « découverte » : NumberFormatter ! D’après une recherche google de 45s, il apparait que cette classe n’est disponible que pour Flex ..

    Voici comment l’utiliser en AS3 seulement. Je n’ai pas pris le temps de l’essayer en MXML.

    ?View Code ACTIONSCRIPT
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    // L'objet magique
    var oFormat:NumberFormatter = new NumberFormatter();
     
    // Arrondis à l'entier le plus proche
    oFormat.rounding = NumberBaseRoundType.NEAREST;
     
    // Et on l'utilise
    trace(oFormat.format(1.51)); // Affiche 2
    trace(oFormat.format(1.49)); // Affiche 1
     
    // Précision à 2 décimal
    // D'abord on n'arrondis plus
    oFormat.rounding = NumberBaseRoundType.NONE;
    // On définit le nb max de décimal
    oFormat.precision = "2";
     
    // Et on l'utilise
    trace(oFormat.format(1.544541511)); // Affiche 1.54
    trace(oFormat.format(1.1)); // Affiche1.10 - note : rajout du 0 !

    Et bien sur, rien ne vaut un coup d’oeil sur la documentation Adobe !
    Et voilà, c’est tout pour aujourd’hui.

    Billet écrit dans : Flex Flash Floush 10.01.2009

    Tags: , , , ,

  • Réagissez a cet article ?!

    Attention: Les commentaires sont modérés et ne sont pas visibles automatiquement. Ce n'est pas la peine de re-soumettre votre commentaire.

CV Guillaume chave