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

Langage Java Discussion :

Formatter un nombre décimal


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 199
    Par défaut Formatter un nombre décimal
    Bonjour à tous,

    Je souhaite formatter un nombre décimal de la façon suivante :
    - si la partie décimale est différente de zéro, je veux le nombre tel quel (en y ajoutant éventuellement un zéro) ;
    - si la partie décimale est égale à zéro, je ne veux que la partie entière.

    Exemples :
    11.55 --> 11.55
    10.5 --> 10.50
    12.0 --> 12

    Comment faire ?

    Merci.

  2. #2
    Membre émérite
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Par défaut
    tu trouveras ton bonheur au sein du package java.text et plus particulierement la classe java.text.DecimalFormat

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 199
    Par défaut
    Merci de ta réponse.
    C'est bien la classe que j'essaie d'utiliser mais je n'arrive pas à déterminer le bon "pattern" : si j'utilise "0.00", alors "12" donne "12.00" (or je veux 12). Si j'utilise "0.##", alors "10.5" donne "10.5" (or je veux "10.50").
    Quelqu'un peut-il m'aider à obtenir le format décrit dans mon premier post ?
    Merci.

  4. #4
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Je crois pas que tu puisses faire ça avec un seul pattern.

    - si tu utilises #0.00 ça va donner:

    11.55 --> 11.55
    10.5 --> 10.50
    12.0 --> 12.00

    - si tu utilises #0.## ça va donner:
    11.55 --> 11.55
    10.5 --> 10.5
    12.0 --> 12

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 199
    Par défaut
    Merci de ta réponse.
    Autrement dit, pour obtenir ce que je veux, il faut quasiment que j'analyse le nombre en format texte auparavant pour connaitre le nombre de décimales et appliquer ensuite le bon "pattern". Qu'en penses-tu ? Y-a-til une autre solution ?

  6. #6
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Avec les expression rationnelles:
    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
    double n=11.55;
     
    DecimalFormat df=new DecimalFormat("#.00");
     
    String s=df.format(n);		
    s=s.replaceAll(",",".");
     
    Pattern p=Pattern.compile("(\\d+)\\.(\\d+)");
    Matcher m=p.matcher(s);
     
    if(m.matches()){
    	if(Integer.parseInt(m.group(2))==0){
    		s=m.group(1);
    	}
    }
    System.out.println(s);
    Avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import java.util.regex.*
    La ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s=s.replaceAll(",",".");
    est là parce que le résultat du formattage avec "df" utilise comme séparateur décimal "," au lieu de "."

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

Discussions similaires

  1. [MySQL] mettre nombre décimal en entier
    Par splouf dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 18/01/2006, 12h20
  2. Réponses: 4
    Dernier message: 21/12/2005, 12h20
  3. [VB.NET] Nombre décimal
    Par Sadneth dans le forum ASP.NET
    Réponses: 8
    Dernier message: 25/11/2005, 12h41
  4. insérer un nombre décimale dans une table
    Par mouloudéen dans le forum Access
    Réponses: 4
    Dernier message: 02/10/2005, 21h29
  5. CRITERIA - Représentation binaire d'un nombre décimal signé.
    Par RamDevTeam dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 10/08/2005, 14h56

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