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 :

Conversion String -> Double


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 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Par défaut Conversion String -> Double
    Bonjour,
    J'aime bien convertir une string en double, ci-dessous mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public static Double getDoubleValeur(Object valeur) {
    		Double valeurRetourne = null;
    		if (valeur != null){
    			String val = String.valueOf(valeur);
    			val = val.replace(",", ".");
    			valeurRetourne = Double.valueOf(val);
    		}
    		return valeurRetourne;
    	}
    Mon problème avec de string dont la taille dépasse (7,2) (7chiffres avant la virgule et 2 apres.
    Exemlpe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    getDoubleValeur(123456789.12)
    done le résultat :
    Comment je peux faire pour obtenir .

    Merci d'avance.

  2. #2
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Salut,

    Pour forcer un formatage, tu peux utiliser un DecimalFormat. Ca donnerait un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    double d = 12345678901.12;
    DecimalFormat df = new DecimalFormat("#.##");
    System.out.println(df.format(d));

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Par défaut
    Le problème est que mon point de départ est Double et non pas double.
    Y-a-t-il un moyen de supprimer la partie exponentielle.

    Mon code testé ci-dessous :
    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
    public static void main(String[] args) {
    		Double db = getDoubleValeur("23456789.12");
     
    		System.out.println("la valeur est : " + db);
    	}
     
    	public static Double getDoubleValeur(String valeur) {
     
    		Double valeurRetourne = null;
    		DecimalFormat df = new DecimalFormat("#.##");
    		double valInitiale = Double.parseDouble(valeur);
    		String valString = df.format(valInitiale);
    		String valFinale = valString.replace(",", ".");
    		valeurRetourne = new Double(valFinale);
     
    		return valeurRetourne;
    	}
    Et mon résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    la valeur est : 2.345678912E7

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    si tu essaies :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    double d = 123456789.12;
    System.out.println(d);
    tu obtiens : 1.2345678912E8

    C'est ainsi que java affiche les grands nombres.

    Le fait que ce soit un Double ou un double ne change rien.

    Si tu veux l'afficher sans la partie exponentielle essaies les propositions précédentes mais je te confirme que ce sera toujours le même nombre c'est juste la façon de l'afficher qui change

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Forcément une fois que tu veux l'afficher, il faut que ce soit une String, et non plus un Double. Si tu transformes en String puis que tu retransformes la String en Double, au final tu as rien fait.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Citation Envoyé par lahmar.abdel1 Voir le message
    Le problème est que mon point de départ est Double et non pas double.
    Y-a-t-il un moyen de supprimer la partie exponentielle.
    Que ce soit un double ou un Double ne change rien. Il faut bien séparer 2 choses : la donnée (le double) et l'affichage (affichage avec exponentiel ou pas).
    Quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    double d = 12345678901.12;
    System.out.println(d);
    tu utilises l'affichage par défaut du double. Ce sera toujours le meme, quoi que tu fasses, avec exponentiel.

    Pour ne pas avoir l'exponentiel, il faut transformer le double en String au format qui te convienne. C'est ce que je fais dans le message #2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    double d = 12345678901.12;
    DecimalFormat df = new DecimalFormat("#.##");
    String s = df.format(d);
    System.out.println(s);

  7. #7
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,
    123456789.12 et 1.2345678912E8 sont égaux.

    java utilise la notation scientifique pour les doubles soit

    x,xxxxxxxxEy ou Ey signifie multiplié par 10^y.

    Tu obtiens donc le bon nombre. Maintenant si c'est l'affichage qui te gêne il te faut définir un format d'affichage :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DecimalFormat monFormatDouble = new DecimalFormat("#.###");
    System.out.println(monFormatDouble.format(1.2345678912E8));

Discussions similaires

  1. Problème de conversion String en Double
    Par eighty_three dans le forum Langage
    Réponses: 7
    Dernier message: 19/06/2008, 09h41
  2. Ma conversion string en double tronque..
    Par NiamorH dans le forum C++
    Réponses: 14
    Dernier message: 08/03/2008, 13h06
  3. conversion string en double
    Par pouletator dans le forum Général Python
    Réponses: 4
    Dernier message: 24/10/2007, 10h35
  4. conversion string en double
    Par kakrocq dans le forum C++/CLI
    Réponses: 4
    Dernier message: 11/04/2007, 13h54
  5. conversion string en double
    Par zmatz dans le forum SL & STL
    Réponses: 2
    Dernier message: 14/10/2005, 22h46

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