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 :

Convertion Double vers String


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Août 2006
    Messages : 29
    Points : 32
    Points
    32
    Par défaut Convertion Double vers String
    Bonjour à tous,

    J'aimerias convertir un double en String.
    J'ai essayé de plusieurs façons mais :
    Dans un cas, il me met la notation scientifique en String.
    Dans un autres cas, il me donne la valeur non réelle, par exemple si j'ai un double avec comme valeur 123456789123456789.123 il me fait un String du style 123456789123456789.1230000000000045800197

    Mon problème n'est bien sur que sur les grandes valeur de double.

    Merci de votre aide

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 87
    Points : 89
    Points
    89
    Par défaut
    Tu utilises la méthode String.valueOf(double) ?

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Avec la génération de sortie formatée.
    Voir la classe java.util.Formatter pour avoir plus d'informations.

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

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Salut,

    Que tu prennes double ou float tu auras toujours des approximations sur le rendu des valeurs.

    Pour éviter celà il faut utiliser la classe BigDecimal. Et pour avoir un format de sortie correct, utiliser la classe DecimalFormat.

    A+

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Août 2006
    Messages : 29
    Points : 32
    Points
    32
    Par défaut
    Merci à tous de votre réactivité.

    Voici le code (simple) que j'utilise (merci thibaut) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BigDecimal b=new BigDecimal(val);
    java.text.DecimalFormat df=new java.text.DecimalFormat();
    String Res=df.format(val);
    Si val = 1234.1234, le String est bien "1234.1234"
    Si val = 123456789123456789.1234, le String est "123 456 789 123 456 784" ?

    Même si dans l'absolue, il est très rare de rencontrer de tel nombres, j'aimenrais pouvoir faire un traitement global.

    Je suis en train de faire une classe pour stocker les nombres double sous forme "simplifiée" dans une base de données :
    Plutôt que de stocker 1234.1234, je stock dans la base 12341234 et dans une table je sais que le champs A à 4 décimales donc je peut reconstrure mon double.
    Le but est de ne pas s'embeter avec l'international et les différents format de nombre. Pouvoir avoir la même base de donnée partagée entre plusieurs pays.

    Merci à tous

  6. #6
    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
    Points : 3 080
    Points
    3 080
    Par défaut
    Tu prends BigDecimal en java et BigDecimal en base de données, ça existe aussi il me semble...

  7. #7
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Citation Envoyé par ®om
    Tu prends BigDecimal en java et BigDecimal en base de données, ça existe aussi il me semble...
    Non je crois que BigDecimal est mappé vers NUMBER.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Août 2006
    Messages : 29
    Points : 32
    Points
    32
    Par défaut
    Une petite précision :

    Le système que je veux mettre en place est le suivant :
    Nous avons un double.
    Je veux convertir ce double en un string sans le signe de la décimale pour ensuite le convertir en long.
    Exemple : 123456.1230 >>> en String "1234561230" >>> en long 1234561230
    C'est le long que je stock dans ma base de données (le format du champs dans la base n'est pas important pour mon souci)
    Pour reconstruire le double, je reprend le long, le le converti en String et je replace le signe de la décimale au bon endroit. Puis convertion en double.

    Le problème est que avec les grands nombre du style 123456789123456789.123456, la convertion en String devient 1234567891234564 ?????

    Je rappel que le but de cette "transformation" est de pouvoir avoir une base de donnée partagée entre plusieurs pays (Avec cette "transformation", plus de soucis de culture et de formats)

  9. #9
    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
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par brsoft.org
    Une petite précision :

    Le système que je veux mettre en place est le suivant :
    Nous avons un double.
    Je veux convertir ce double en un string sans le signe de la décimale pour ensuite le convertir en long.
    Exemple : 123456.1230 >>> en String "1234561230" >>> en long 1234561230
    C'est le long que je stock dans ma base de données (le format du champs dans la base n'est pas important pour mon souci)
    Pour reconstruire le double, je reprend le long, le le converti en String et je replace le signe de la décimale au bon endroit. Puis convertion en double.

    Le problème est que avec les grands nombre du style 123456789123456789.123456, la convertion en String devient 1234567891234564 ?????

    Je rappel que le but de cette "transformation" est de pouvoir avoir une base de donnée partagée entre plusieurs pays (Avec cette "transformation", plus de soucis de culture et de formats)
    Et comment tu comptes stocker le nombre de chiffres après la virgule?

    Je pense que c'est plus contraignant d'avoir à rajouter la virgule/le point au bon endroit que de convertir un point en virgule ou le contraire pour un soucis de format...

  10. #10
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Août 2006
    Messages : 29
    Points : 32
    Points
    32
    Par défaut
    Le nombre de chiffre après la virgule est stocké dans un "dictionnaire de donnée" qui est en fait la description de chaque champs des tables.
    On fait un "ALIAS" DATECDE, on attribue un préfixe à la table et les champs sont : 000DATECDE pour la table A, 050DATECDE pour la table B

    Le gros avantage de cette methode est le suivant :

    Si un jour, on veut passer de 2 à 4 décimales, il n'y a qu'a changer le nombre de décimale dans le "dictionnaire de données" et non dans la base de données.

  11. #11
    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
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par brsoft.org
    Si un jour, on veut passer de 2 à 4 décimales, il n'y a qu'a changer le nombre de décimale dans le "dictionnaire de données" et non dans la base de données.
    Il faudra quand même ajouter deux 0 à tous les "long" stockés en "string"!

  12. #12
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Août 2006
    Messages : 29
    Points : 32
    Points
    32
    Par défaut
    Of course, tu as raison.
    Sauf dans le cas de l'installation et du parametrage du soft.

    Je sais que plein de methodes existent et se valent, je travail sur JDEdwards, un ERP acheté par ORACLE il y a un peu plus d'un an et il fonctionne comme ça.
    Il est certainement vrai que ce n'est peut être plus la meilleur solution (JDEdwards existe depuis des années) mais en essayant de reproduire son fonctionnement, ce problème de convertion m'intrigue.

    Ce n'est finalement pas cette solution que je retiendrais mais j'aime bien arriver à mes fins.

Discussions similaires

  1. Convertion E9 vers String
    Par Ho(c)ine. dans le forum Langage
    Réponses: 2
    Dernier message: 03/12/2008, 05h57
  2. convertion hex vers string
    Par mmarcoboss dans le forum Débuter
    Réponses: 5
    Dernier message: 11/01/2008, 08h03
  3. convertion Double -> String
    Par laurent.c123 dans le forum Langage
    Réponses: 4
    Dernier message: 03/07/2007, 15h08
  4. convertion d'un string en double
    Par tetedeturcq dans le forum ASP.NET
    Réponses: 7
    Dernier message: 29/06/2007, 15h09
  5. Réponses: 4
    Dernier message: 06/05/2005, 13h37

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