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 :

comment faire de 2 Strings 1 seul double ?


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut comment faire de 2 Strings 1 seul double ?
    Bonjour tout le monde...
    Je suis débutant en dév...
    Je suis en 1ère année de JAVA et je sèche sur un truc...

    J'ai 2 Strings que je reçois en paramètre dans une méthode
    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void maMethode(String Entier, String Decimale){}
    Dans mon autre classe quand j'instancie l'objet et que j'appelle "maMethode"
    je rentre manuellement (juste pour le test) ("3000", "50")

    Je veux avec ces deux Strings en faire un Double...
    C'est à dire qqch dans ce genre :

    double montant; //et que mon double soit égal à 3000,50



    Si qqn a une idée, je suis preneur, merci.

    PS: pour la suite de l'exercice je suis obligé de travailler mes paramètres en String... Pas possible de mettre le double en paramètre au lieu des 2 Strings...

  2. #2
    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
    J'envisage grosso-modo deux solutions :

    1 - "Démerde-toi Java"

    - Concaténer tes deux paramètres avec une virgule au milieu, pour que ça fasse "3000,50"
    - Utiliser un DecimalFormat pour parser ça en double.

    2 - "Vais l'faire moi-même"

    - Utiliser Integer.parseInt()* pour parser la partie entière et la partie décimale en ints.
    - caster la partie décimale en double.
    - diviser la partie décimale par 10 puissance la longueur de sa String, obtenue avec length(). Ça t'obtiendra un double de valeur 0,50 environ
    - additionner partie entière et partie décimale, ce qui fera environ 3000,50

    * Si les nombres sont grands, il vaut peut-être mieux utiliser Long.parseLong(), ou carrément oublier cette méthode.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut
    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
     
    public void maMethode(String Entier, String Decimale){
     
          int valEntier = Integer.ValueOf("Entier");
          int valDecimale = Integer.ValueOf("Decimal");
     
          int valDouble = valEntier * 100 + valDecimal;
     
          // sit tu le veux en double :
          double tonDouble = valDouble / 100;
     
          // et si tu le veux en String :
          String tonDouble = "" + valDouble/100;
     
    }
    Dans ton exemple cela donnerai :

    maMethode("3000","50")
    ValDouble = 3000 *100 + 50 = 300050
    tonDouble = 300050/100 = 3000,50

    Après ce n'est pas parfait, car il te fait adapter le multiplicateur/diviseur suivant le nombre de chiffre de ton Décimal :

    1 chiffre => 10
    2 chiffres => 100
    etc....
    n chiffres => 10^n

    Voila ce qui vient de me passer par la tête, en espérant que ca pourra t'aider.


    Edit : thelvin, même idée, tu as validé plus tôt ton message lol

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut
    Avant toutes choses. Merci pour vos réponses rapides.
    Et dans un deuxième temps, désolé car au vu de vos réponses
    je me dis que ma question était incomplète.

    Mon problème c'est que j'ai besoin de faire des calculs.
    Je m'explique

    calculer plusieurs fois les montants reçus, càd

    Une fois je reçois "3000", "50"
    Une autre fois "1000","95"
    et boum ça me fait un chiffre décimal à 3 positions
    et cela peut aller jusqu'à 4 décimales si je reçois beaucoup beaucoup de montants.

    Si par exemple mon chiffre décimal est de "1500"//centimes
    Je dois transférer le "15" de "1500" dans les entiers...

    Je me suis creuser la tête déjà.
    J'ai fait plusieurs tests avec des system.out.println mais rien à faire
    Je n'obtiens pas le résultat souhaité.

    Merci d'avance.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 173
    Par défaut
    Pour faire au plus simple, je suggère la concatenation, puis passer par le constructeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void maMethode(String Entier, String Decimale){
     
    Double d = new Double(Entier + "," + Decimal)      
     
    }
    Je pense que cela pourrait suffire.

    PS : petit conseil au passage, évite de créer des paramètres ou variable avec une lettre majuscule à la première lettre, la première lettre devrait être en minuscule. Cela fait des Best-Practice Java...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut
    Citation Envoyé par amine_en_france Voir le message
    Pour faire au plus simple, je suggère la concatenation, puis passer par le constructeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void maMethode(String Entier, String Decimale){
     
    Double d = new Double(Entier + "," + Decimal)      
     
    }
    Je pense que cela pourrait suffire.

    PS : petit conseil au passage, évite de créer des paramètres ou variable avec une lettre majuscule à la première lettre, la première lettre devrait être en minuscule. Cela fait des Best-Practice Java...


    OK conseil retenu, merci
    Ton idée est pas mal du tout,
    mais reste mon problème de passer les décimales en entier
    si + de 2 décimales

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 173
    Par défaut
    Citation Envoyé par CosaNostra Voir le message
    mais reste mon problème de passer les décimales en entier
    si + de 2 décimales
    Je ne comprends pas bien ce que tu veux faire....

    Ton String Decimal peut etre aussi grand que tu veux.

    Si tu fais un String du genre "3000,21354" la classe double va te le transformer en un nombre.

    C'est pas ce que tu voulais?

  8. #8
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut
    ok ok, donc si je comprend bien le problème après les précisions, si tu as par exemple 1234 comme Decimal, tu dois faire comme si cela était 12,34 ?

    Entier 3000
    Decimal 1234

    => Double 3012,34 ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/11/2011, 19h23
  2. [JDOM] comment faire : Xml to String
    Par boukharyinfos dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 19/05/2009, 20h16
  3. Réponses: 2
    Dernier message: 04/06/2008, 01h31
  4. Comment faire passer un string en ligne de commande ?
    Par cococococococo dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 27/06/2007, 17h15
  5. [Conversion]Comment faire pour couper un Double trop long?
    Par dessinateurttuyen dans le forum Général Java
    Réponses: 1
    Dernier message: 13/11/2005, 02h22

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