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

avec Java Discussion :

problème de décimales


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 52
    Par défaut problème de décimales
    Bonjour à tous !
    J'ai un petit soucis avec les nombres décimaux pour un programme : j'ai créé une classe étendant JFormattedTextField :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class MontantTextField extends JFormattedTextField {
        public MontantTextField() {
            super(new NumberFormatter(new DecimalFormat("#,##0.00")));
        }
        public MontantTextField(double d) {
            super(new NumberFormatter(new DecimalFormat("#,##0.00")));
            this.setValue(d);
        }
    }
    Lorsque je veux l'utiliser dans un formulaire, si j'écris "123.25", ça me meet "123,00", si j'écris "123,25" ça m'écrit "123,25".
    J'imagine que c'est un problème de Locale, mais je me rends compte que je ne sais pas où le mettre... j'ai essayé de mettre "this.setLocale(Locale.ENGLISH)" dans les constructeurs, mais ça ne fonctionne pas...

    Merci d'avance pour l'aide

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Pour les DecimalFormat, il faut passer par le DecimalFormatSymbols pour utiliser une Locale différente de la Locale par défaut.

    Par exemple,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new NumberFormatter(new DecimalFormat("#,##0.00", new DecimalFormatSymbols(Locale.US)))
    Ou pour le format par défaut standard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new NumberFormatter(NumberFormat.getNumberInstance(Locale.US));
    J'ai pris la locale US parce que je ne suis pas sûr que la Locale.ENGLISH utilise le . pour séparer les décimales...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 52
    Par défaut
    Merci à toi, problème résolu !
    Juste, pour modifier le séparateur de groupe (que "1233.00" apparaisse "1 233.00" au lieu de "1,233.00"), comment puis-je faire ?
    J'ai essayé en utilisant un DecimalFormatSymbols, mais comme j'appelle le constructeur parent via "super(...)", je ne peux pas faire un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class MontantTextField extends JFormattedTextField {
        public MontantTextField() {
            DecimalFormat df = new DecimalFormat();
            DecimalFormatSymbols dfs = new DecimalFormatSymbols();
            dfs.setGroupingSeparator(' ');
            dfs.setDecimalSeparator('.');
            df.setDecimalFormatSymbols(dfs);
            super(new NumberFormatter(df));
        }
    ...

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Un moyen parmi d'autres :
    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
    public class MontantTextField extends JFormattedTextField {
     
        private static final NumberFormat MY_DECIMAL_FORMAT = createMyDecimalFormat();
     
        public MontantTextField() {
            super(new NumberFormatter(MY_DECIMAL_FORMAT));
        }
     
        private static NumberFormat createMyDecimalFormat() {
            DecimalFormat df = new DecimalFormat();
            DecimalFormatSymbols dfs = new DecimalFormatSymbols();
            dfs.setGroupingSeparator(' ');
            dfs.setDecimalSeparator('.');
            df.setDecimalFormatSymbols(dfs);
            return df;
        }
     
    }
    Je passe par une variable static pour éviter de créer une instance différente de format et de symbols pour chaque MontantTextField.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 52
    Par défaut
    Merci beaucoup !

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

Discussions similaires

  1. [Conception] Problème de décimales Access>PHP
    Par LadyArwen dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 04/01/2006, 15h47
  2. [FLASH MX2004] Problème de décimales
    Par stip dans le forum Flash
    Réponses: 3
    Dernier message: 15/07/2005, 23h45
  3. [FLASH MX] Problème de décimale avec euro
    Par yoda_style dans le forum Flash
    Réponses: 7
    Dernier message: 21/05/2005, 04h14
  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. Petit problème de décimales !
    Par ridan dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/09/2004, 21h24

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