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

JavaScript Discussion :

Afficher le signe d'un nombre


Sujet :

JavaScript

  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Février 2015
    Messages : 402
    Points : 153
    Points
    153
    Par défaut Afficher le signe d'un nombre
    Bonjour,
    Dans un script j'ai une fonction qui retourne un taux formaté comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return new Intl.NumberFormat('fr-FR', {minimumFractionDigits: 2}).format(taux[args.index]);
    Je souhaiterais que ce nombre soit toujours précédé du signe + si positif.
    Je ne vois pas comment faire et je ne trouve rien sur le net.
    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 476
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 476
    Points : 4 687
    Points
    4 687
    Par défaut
    ne connaissant pas le format de ton nombre...
    si c'est une string if(nombre[0] !== '-') { nombre = '+' + nombre; }, si c'est un int if(nombre>0) { nombre = '+' + nombre; }par contre, dans les deux ca, ajouter un + passera ton nombre en string

  3. #3
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 749
    Points
    4 749
    Par défaut
    Alors avant toute choses
    écrire return new Intl.NumberFormat('fr-FR', {minimumFractionDigits: 2}).format(taux[args.index]); c'est pas bien dur tout.
    Parce que cela crée un nouvel objet à chaque fois qu' on passe sur le return.
    Bien sur "ça marche" mais ça remplit inutilement le garbage collector.

    il faut mieux écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    const MyFormat = new Intl.NumberFormat('fr-FR', { minimumFractionDigits: 2 } )
    //...
     
    function XY() {
    //...
     
    return MyFormat.format(taux[args.index]);
    }

    pour avoir le signe "positif" faut juste surcharger la méthode format de la classe Intl.NumberFormat

    en procédant ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class SignedFormat extends Intl.NumberFormat {
      constructor(...args) { super(...args) }
      format(x) {
        let y = super.format(x);
        return x < 0 ? y : '+' + y;
      }
    }
     
    const MyFormat = new SignedFormat('fr-FR', { minimumFractionDigits: 2, maximumFractionDigits:2} )
     
    console.log(MyFormat.format(-78.123456));   // -78,12 
    console.log(MyFormat.format(90.123456));   //  +90.12
    console.log(MyFormat.format(0));                //  +0.00
    Sinon zencore, si tu veux pas surcharger la méthode format tu peux aussi directement ajouter ta méthode à l'objet Intl.NumberFormat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Intl.NumberFormat.prototype.formatWithSign = function(x) 
    {
      let y = this.format(x)
      return x < 0 ? y :  '+' + y
    }
     
    const MyFormat = new Intl.NumberFormat('fr-FR', { minimumFractionDigits: 2, maximumFractionDigits:2} )
     
     
    console.log(MyFormat.formatWithSign(-78.123456));     // -78,12 
    console.log(MyFormat.formatWithSign(90.123456));     //  +90.12
    console.log(MyFormat.formatWithSign(0));            //   +0.00

  4. #4
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Février 2015
    Messages : 402
    Points : 153
    Points
    153
    Par défaut
    Ok Merci beaucoup

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

Discussions similaires

  1. [SQL SERVER 2K] Afficher le signe d'un nombre positif ?
    Par andlio dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/08/2007, 14h09
  2. Afficher le signe des nombres positifs
    Par vcattin dans le forum Access
    Réponses: 2
    Dernier message: 27/12/2006, 14h16
  3. [debutant] signe d'un nombre ?
    Par crocodile dans le forum Langage
    Réponses: 3
    Dernier message: 21/08/2006, 11h28
  4. [VBA-E] Afficher les 0 devant un nombre
    Par skual dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/05/2006, 10h58
  5. Afficher le plus petit des nombres
    Par wkm1807 dans le forum Access
    Réponses: 1
    Dernier message: 05/10/2005, 23h46

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