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

Contribuez Discussion :

Nombres décimaux, arrondissement avec précision décimale.


Sujet :

Contribuez

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut [JavaScript] Nombres décimaux, arrondissement avec précision décimale.
    Salut !

    J'aimerais vous proposer une petite bricole que je viens de produire. Mon besoin étant d'arrondir des nombres après quelques décimales, non pas à l'entier près tel que le propose la fonction native Math.round.

    Ça s'utilise très simplement, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var number = 3.14159265;
    Math.round(number); // appel naturel, arrondissement à l'entier près : 3
    Math.round(number, 1); // arrondissement après une décimale : 3,1
    Math.round(number, 3); // arrondissement après trois décimales : 3,142
    Math.round(number, 6); // arrondissement après six décimales : 3.141593
    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
    // Math.round redefinition providing the ability to round numbers by considering a certain amount of decimals.
    Math.round = Math.round.wrap(function(legacy, number, precision) {
        var result = Number.NaN;
     
        // Is a precision given?
        if(precision != undefined) {
            // Round the number by considering as many decimals as it is given.
            result = Math.round(number * Math.pow(10, precision)) / Math.pow(10, precision);
        }
        else {
            // Otherwise, when the call signature is natural (only one parameter), use the legacy function.
            result = legacy.apply(null, [number]);
        }
     
        return result;
    });
    Note : Ah oui, j'ai failli oublier... J'utilise prototype.js et la méthode Function#wrap. L'adaptation pour s'en dispenser n'est pas très compliquée, le tout étant de conserver une référence à la fonction naturelle Math.round afin de pouvoir l'appeler quand on n'a pas besoin de précision décimale.

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Merci à toi, ça peut s'avérer pratique

    Par contre, je me demandais (par curiosité) s'il y a une raison (j'ai déjà lu pas mal de tes posts donc je suppose que oui ) pour que tu aies employé
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    result = legacy.apply(null, [number]);
    au lieu de
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    result = legacy.call(null, number);
    ? ^^

    (Ca me permettra peut-être de comprendre la différence entre ces deux méthodes que je confonds allègrement )

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    A priori, la seule différence est que apply oblige à passer les paramètres dans un tableau.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut
    Voilà, c'est une question d'usage de la fonction. ^^

    https://developer.mozilla.org/en/Cor...tion#Methods_2

Discussions similaires

  1. [XL-2003] VBA - Calculer avec précision décimale
    Par Lorenzole+bo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/01/2010, 16h16
  2. Réponses: 3
    Dernier message: 25/06/2008, 10h39
  3. Réponses: 3
    Dernier message: 21/12/2007, 15h13
  4. [PHP,MYSQL et CSV]Importation avec nombres décimaux
    Par m3n2o dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 20/06/2006, 11h47
  5. Afficher un nombre avec 2 décimales.
    Par Higestromm dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/02/2006, 16h12

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