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 :

Problème avec DecimalFormat


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
    Mai 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 60
    Par défaut Problème avec DecimalFormat
    Bon voilà, je veux convertir ceci:

    999999999

    en

    999 999 999

    J'utilise un DecimalFormat

    DecimalFormat df = new DecimalFormat("###,###,###");

    Visuellement ça fonctionne tel que désiré, cependant au lieu d'avoir un ascii 32 il y a un ascii 194. Donc lorsque que je fais une requête sur ma base de données postgresql avec le bon nombre (séparé avec des espaces) il ne me trouve rien car ce que j'insère dans la base de données (avec le DecimalFormat) contient des ascii 194 au lieu des espaces

    J'ai essayé de faire un replaceAll((char)194, (char)32) mais ça ne fontionne pas...

    Merci de m'éclairer

  2. #2
    Membre expérimenté Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Par défaut
    Slt,
    ce que tu devrais faire c'est modifier ta valeur d'entree avant de l'inserer dans ta table.

  3. #3
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut
    Ce que j'ai l'habitude de faire, en général c'est de bien séparer la partie traitement de la partie affichage (et également de la partie stockage de données). En gros j'aime bien utiliser une architecture 3-tiers avec le traitement s'interfaçant entre l'affichage et le stockage.
    Ainsi à ta place j'utiliserais tou simplement le DecimalFormat pour, mais seulement pour, l'affichage.
    Après, d'autre part, je me le stockerais au format voulu (int, float ou ce que tu veux...) et je ferais tous les traitements sur ce format là...

  4. #4
    Membre expérimenté Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Par défaut
    Ouais je pense que leminipouce a raison. Recupere tes donnes et traite les avant de les stocker plutot que de le faire directement.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 60
    Par défaut
    Je sais que ce n'est pas la bonne façon de faire. Cependant je dois réaliser un mandat avec des contraintes précises dont le format de stockage des données est ainsi. Je travaille dans une entreprise où les données sont stockées de cette manière depuis des années et je dois m'y conformer.

    Merci quand même


    g0ldenrno

  6. #6
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut
    Citation Envoyé par g0ldenrno
    J'ai essayé de faire un replaceAll((char)194, (char)32) mais ça ne fontionne pas...
    Oups, j'ai pas vu ça !!!
    Alors rassure toi, c'est plutôt bon signe. Ca prouve que l'API Sun marche bien.

    Essayes donc avec replace(char, char);

    replaceAll(String, String) pour info.... et ça marche avec des expressions régulières.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 60
    Par défaut
    Fonctionne pas

  8. #8
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par g0ldenrno
    Fonctionne pas
    replaceAll(""+(char)194,""+(char)32)

    Mais bon, les entreprises sont parfois un peu stupides, stocker des nombres au format texte dans une base de données, ils ont pas dû réfléchir plus de 2 secondes avant de faire ça

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 60
    Par défaut
    Ça ne fonctionne pas non plus malheureusement...

    Je vais plutôt tenter à nouveau de convaincre le gestionnaire de la base de données pour qu'il change le type de cette colonne afin qu'elle accepte seulement des entiers.

    Edit: oui je faisais bel et bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maChaine = maChaine.replace...
    J'ai vu que ma chaine contenait des (char)194 en faisant un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ascii(substring(colonne,3,1)) from table

    Merci à tous.

    g0ldenrno

  10. #10
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut
    Citation Envoyé par g0ldenrno
    Ça ne fonctionne pas non plus malheureusement...
    Désolé d'insister (j'en suis d'ailleurs peut-être un peu lourd, et je m'en excuse) mais je n'arrive pas à voir ni comprendre ce qui ne fonctionne pas.

    Est-ce le replace() qui ne marche pas ? Si tel est le cas, c'est que tu n'as pas ce type de caractère à remplacer (d'après mon humble avis). As-tu essayer de remplacer par un autre type de caractère (un 'A' par exemple) ? Et as-tu essayé de remplacer un autre caractère de ta chaine (le sus-dit caractère 32 par exemple...).

    Ce que je voudrais savoir c'est à quel moment tu te retrouves avec des char(194). Car si j'ai bien compris tu insères une chaine avec des espace (char(32)) et quand tu la récupères tu te retrouves avec des char(194) à la place de tes espaces. Résultat tu n'arrives pas à faire de traitement dessus, et surtout de requêtes dans ta table. C'est ça ou je me trompes ?

  11. #11
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut
    Citation Envoyé par g0ldenrno
    Fonctionne pas
    Rassure moi, tu fais bien quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maChaine = maChaine.replace((char)194,(char)32);
    Si ça ne marche pas, es-tu sûr qu'au moment de ton replace ta chaine contient bien de (char)194 ?

    [EDIT]
    Mais bon, les entreprises sont parfois un peu stupides, stocker des nombres au format texte dans une base de données, ils ont pas dû réfléchir plus de 2 secondes avant de faire ça +1
    [/EDIT]

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

Discussions similaires

  1. Problème avec DecimalFormat
    Par bedomon dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 29/08/2013, 16h44
  2. Problème avec DecimalFormat
    Par grospatapouf dans le forum Composants
    Réponses: 1
    Dernier message: 02/12/2008, 12h23
  3. Problème avec DecimalFormat
    Par stof dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 12/06/2008, 16h09
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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