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 :

Chiffres à virgule : points et virgules ?


Sujet :

Langage Java

  1. #1
    Membre régulier Avatar de poulette3000
    Profil pro
    Inscrit en
    Août 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 183
    Points : 73
    Points
    73
    Par défaut Chiffres à virgule : points et virgules ?
    Bonjour,

    J'ai recuperé certaines valeurs calculées dans mon applet qui sont parfois des int parfois des double parfois des float (certains tronqués ou non) ... que je mets dans un fichier texte

    Quand j'ouvre le fichier texte, mon pb est surtout esthétique certains sont avec virgules
    et d'autres avec des points
    Quelqu'un sait il s'il y a une regle la dedans ? du genre int virgule, float point ... et si c le cas , comment je peux faire pour que tout soit avec des points (sans avoir a changer les initialisations que j'avais dejà faites dans mon applet)

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Régle de base en français: le séparateur des décimales est une virgule, celui des milliers un espace.
    Régle de base en anglais: le séparateur des décimales est un point, celui des milliers une virgule.

    Le mieux pour toi sera de toute façon de passer tes nombres à la moulinette du NumberFormat afin d'avoir un format constant en sortie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String s = NumberFormat.getNumberInstance().format(monDouble);
    Par contre cette méthode ne prends que des doubles ou des long en paramètres, donc veilles à bien caster tes valeurs en amont si besoin est.

    ++

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 854
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 854
    Points : 22 878
    Points
    22 878
    Billets dans le blog
    51
    Par défaut
    Attention a la Locale courante ou celle du formatteur egalement.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Je pense aussi à un problème de Locale. La javadoc de Double.toString dit :

    To create localized string representations of a floating-point value, use subclasses of NumberFormat.

    Javadoc NumberFormat

  5. #5
    Membre régulier Avatar de poulette3000
    Profil pro
    Inscrit en
    Août 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 183
    Points : 73
    Points
    73
    Par défaut
    Ah la la je m'en sors pas !
    Je susi revenue aux sources de mon code, et ce n'est pas e double qui fait qu'il y a une virgule, mais plutot un NumberFormat
    Voici le code en question


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    fmt2 = NumberFormat.getInstance();
    fmt2.setMaximumFractionDigits(1);
    fmt2.setMinimumFractionDigits(1);
    st = fmt2.format(val);
    val2=val;
    Si je fais (val2 est de type Double)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public String getSt(){
    return val2+"";
    }
    La je me retrouve bien avec un Point dans mon fichier texte ! mais avec TROP de chiffre avec la virgule !

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Citation Envoyé par poulette3000
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public String getSt(){
    return val2+"";
    }
    Ce type de code n'est pas très propren, autant faire directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public String getSt(){
    return Double.toString(val2);
    }
    Mais si tu veux contrôler le format de sortie il faut passer par un NumberFormat comme cela a été dit plus haut...


    Quel est ton exactement ton problème ???


    a++

  7. #7
    Membre régulier Avatar de poulette3000
    Profil pro
    Inscrit en
    Août 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 183
    Points : 73
    Points
    73
    Par défaut
    Je veux faire un Double conserver le point qui separe les entiers des décimaux ( et pas me retrouver avec une virgule) et tronquer à 1 après la virgule.
    LA je suis arrivée à conserver le Point mais je me retrouve avec tro de chiffres après le point, et si j'utilise un numberFormat, le point passe en virgule .

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par poulette3000
    et si j'utilise un numberFormat, le point passe en virgule .
    Comme cela a été dit, avec NumberFormat il faut spécifier la locale :
    Citation Envoyé par sinok
    Régle de base en français: le séparateur des décimales est une virgule, celui des milliers un espace.
    Régle de base en anglais: le séparateur des décimales est un point, celui des milliers une virgule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NumberFormat nf = NumberFormat.getInstance(Locale.US);
    a++

  9. #9
    Membre régulier Avatar de poulette3000
    Profil pro
    Inscrit en
    Août 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 183
    Points : 73
    Points
    73
    Par défaut
    Dis moi adi
    comment se fait-ce qu'avec ce code j'ai toujours trop de chiffres après la virgule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	public String getSt(){
    		NumberFormat nf = NumberFormat.getInstance(Locale.US);
    		nf.setMaximumFractionDigits(1);
    		nf.setMinimumFractionDigits(1);
    		nf.format(val2); // val2 est un double
    		return Double.toString(val2);
    	}
    merci

  10. #10
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Parce que tu retourne le résultat de Double.toString() et non pas celui de NumberFormat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	public String getSt(){
    		NumberFormat nf = NumberFormat.getInstance(Locale.US);
    		nf.setMaximumFractionDigits(1);
    		nf.setMinimumFractionDigits(1);
    		return nf.format(val2); // val2 est un double
    	}
    a++

  11. #11
    Membre régulier Avatar de poulette3000
    Profil pro
    Inscrit en
    Août 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 183
    Points : 73
    Points
    73
    Par défaut
    C'est marrant mais le NumberFormat ça me le convertit tout seul en string après le return ? sinon ça marche

  12. #12
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par poulette3000
    C'est marrant mais le NumberFormat ça me le convertit tout seul en string après le return ?
    Ben c'est objectif même du NumberFormat : formater un nombre en chaine de caractère...

    a++

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

Discussions similaires

  1. [XL-2003] comparer 2 chiffres : séparateur point et virgule
    Par Djohn dans le forum Excel
    Réponses: 3
    Dernier message: 12/10/2011, 14h36
  2. regex chiffres séparés d'une virgule ou d'un point
    Par grospatapouf dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 29/04/2009, 10h50
  3. [DELPHI WIN32] Remplacer points par virgules
    Par manubrard dans le forum Langage
    Réponses: 3
    Dernier message: 28/03/2006, 15h02
  4. Réponses: 3
    Dernier message: 11/11/2005, 11h59
  5. sprintf : le point devient virgule ?!
    Par jula dans le forum C++
    Réponses: 4
    Dernier message: 17/09/2004, 12h50

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